RHCSA

重点:

        保证在重启机器时,服务器配置依然有效

环境基本信息:

注意:

1、做题目之前确定一下快照,点击vm里面导航栏的蓝色扳手切换(切记先关掉虚拟机在切换快照),Kiosk密码:redhat ​

2、调整下VMware的内存:12-14g,处理器:根据电脑配置,最低上下各:2个​

3、做csa切换:csa-off、 做ce切换:ce-off ,宿主机上执行命令:virt-manager​

4、csa环境:node1机器root密码是flectrag,node2机器要自己破解 ​

5、评分脚本,在宿主机,执行命令:exam-grade ​

6、真正考试满分300分,合格:210分,附加题也包含在300分

Kiosk密码:redhat

一,配置网络设置

1.1 题目

1. 配置网络,要求如下:
• 主机名: servera.lab.example.com

• IP 地址: 172.25.250.10

• 子网掩码: 255.255.255.0

• 网关: 172.25.250.254

• DNS: 172.25.250.254

题目内容解析:
• 配置好网卡的信息,网卡的配置文件在/etc/sysconfig/network-scripts目录下的ifcfg-*的文件

• 配置主机名的信息

• 配置网卡和主机名需要生效,并设置为开机生效

1.2 实操演示过程:

方法一:使用nmtui图形化

(推荐,不会错)

• 网络的配置

[root@servera ~]# nmtui

选择编辑网卡配置

 选择当前的网卡配置

 

 配置网卡的信息,确认之后选择OK就可以了

 主机名的配置

 

 编辑主机名

方法二:nmcli 命令

通过nmcli命令的方式设置网卡的配置,hostsname命令配置主机信息

查看所有的网络连接信息

[root@servera yum.repos.d]# nmcli connection show
 
NAME UUID TYPE DEVICE
 
ens33 ff5a9e65-ff7d-4604-a069-ef96544fce4f ethernet ens33

设置网卡的配置信息,如IP地址、dns,网关,设置为开机自启网卡(间隔为空格)

[root@servera ~]# nmcli connection modify "ens33" 
ipv4.addresses 172.25.250.10/24 
ipv4.gateway 172.25.250.254 
ipv4.dns 172.25.250.254 
ipv4.method manual connection.autoconnect yes

命令参数解析:
 
modify:选择需要修改的网卡,一般是网卡的名称
ipv4.address:配置ipv4的地址
ipv4.gateway:配置ipv4的网关地址
ipv4.dns:配置ipv4的dns配置
ipv4.method:ipv4的模式类型
connection.autoconnect:配置ipv4网卡是否自动连接,就是自动启动

启用网卡的配置信息

[root@servera yum.repos.d]# nmcli connection up "ens33"
 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

设置主机名

[root@servera ~]# hostnamectl set-hostname servera.lab.example.com

Linux操作系统的主机名的配置文件为:

[root@servera ~]# cat /etc/hostname

servera.lab.example.com

方法三:修改配置文件

linux的特点就是一切皆文件,所以配置网卡可以直接去网卡的配置进行配置

[root@servera network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@servera network-scripts]# vim ifcfg-ens33
[root@servera network-scripts]# cat ifcfg-ens33
 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
UUID=ff5a9e65-ff7d-4604-a069-ef96544fce4f
DEVICE=ens33
ONBOOT=yes
IPADDR=172.25.250.10
NETMASK=255.255.255.0
PREFIX=24
GATEWAY=172.25.250.254
IPV6_PRIVACY=no
DNS1=172.25.250.254

网卡的配置修改完成之后需要生效,这时需要重启network服务即可

[root@servera network-scripts]# nmcli c up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

主机名的设置也可以直接到主机名配置里修改即可

[root@servera network-scripts]# cat /etc/hostname
servera.lab.example.com

验证网卡的IP地址和网卡的配置

[root@servera ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:3b:22:06 brd ff:ff:ff:ff:ff:ff
    inet 172.25.250.7/24 brd 172.25.250.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe3b:2206/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

主机名的验证

[root@servera bin]# nslookup servera.lab.example.com
 
Server: 172.25.250.254
Address: 172.25.250.254#53
 
 
** server can't find servera.lab.example.com: NXDOMAIN

修改主机名:

hostnamectl set-hostname 主机名

二,配置系统使用默认存储库

题目

YUM 的两个存储库的地址分别是:

http://content.example.com/rhel8.2/x86_64/dvd/BaseOS

http://content.example.com/rhel8.2/x86_64/dvd/AppStream

题目内容解析:

• 创建一个yum源配置文件,在/etc/yum.repo.d/目录下

• 配置yum源配置文件中包含了AppStream(软件应用仓库)和BaseOS(基本软件仓库)

实操演示过程:

yum源文件的存放路径如下:

[root@servera network-scripts]# cd /etc/yum.repos.d/
[root@servera yum.repos.d]# pwd
/etc/yum.repos.d

创建一个yum源,编辑的内容如下:

[root@servera ~]# vim /etc/yum.repos.d/test.repo
 
新增如下的内容
[base]
name=BaseOS
baseurl=http://content.example.com/rhel8.2/x86_64/dvd/BaseOS
enabled=1
gpgcheck=0
 
 
[app]
name=appstream
baseurl=http://content.example.com/rhel8.2/x86_64/dvd/AppStream
enabled=1
gpgcheck=0

yum配置文件的格式

[rhel-source]                                        #yum标签

name=Red Hat Enterprise Linux         #yum源的描述信息

baseurl=file/http/ftp                 #指定yum仓库的位置,可以是本地文件/http的url/ftp远程url

enabled=0                                           #是否启用yum的校验规则 0不启用,1启用

gpgcheck=1                                         #是否启用rpm签名 ,0不启用,1启用

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release         #启动签名到时候需要校验key内容。表示key文件的路径

生效yum源文件并生成本地yum缓存

[root@servera yum.repos.d]# yum clean all
Repository base is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository PowerTools is listed more than once in the configuration
Repository AppStream is listed more than once in the configuration
18 files removed

生成本地缓存

[root@servera yum.repos.d]# yum makecache
CentOS-8 - Base - mirrors.aliyun.com 26 kB/s | 3.9 kB 00:00
CentOS-8 - Extras - mirrors.aliyun.com 12 kB/s | 1.5 kB 00:00
CentOS-8 - AppStream - mirrors.aliyun.com 27 kB/s | 4.3 kB 00:00
Metadata cache created.

查看yum源信息

[root@servera yum.repos.d]# yum repolist
repo id repo name
AppStream CentOS-8 - AppStream - mirrors.aliyun.com
base CentOS-8 - Base - mirrors.aliyun.com
extras CentOS-8 - Extras - mirrors.aliyun.com

三,调试SELinux

题目

背景:非标准端口82上运行的WEB 服务器但是在提供web内容时遇到问题。根据需要调试并解决该问题,并使其满足以下条件:

• 系统上的web 服务器能够提供/var/www/html 中所有现在有的html文件(注意:不要删除或者其他方式改动现有的文件内容)

• Web 服务器通过82端口访问

• Web 服务器在系统启动时自动启动

题目内容解析:

• 82端运行web服务,需要部署http服务,并设置监听端口为82

• 提供html的web页面是在/var/www/html/并需要设置selinux的上下属性httpd_sys_content_t

• web服务是运行状态,同时设置开机自动

• selinux防护是处于强制模式并需要配置selinux防护放开http的82端口

实操演示过程:

web环境检查: 考试时一般是不需要的,但是还是要进行检查

[root@servera ~]# rpm -qa | grep http
httpd-filesystem-2.4.37-47.module_el8.6.0+1111+ce6f4ceb.1.noarch
httpd-2.4.37-47.module_el8.6.0+1111+ce6f4ceb.1.x86_64
libnghttp2-1.33.0-3.el8_2.1.x86_64
httpd-tools-2.4.37-47.module_el8.6.0+1111+ce6f4ceb.1.x86_64
centos-logos-httpd-85.8-2.el8.noarch
mod_http2-1.15.7-5.module_el8.6.0+1111+ce6f4ceb.x86_64

httpd没有安装的时候就安装运行并设置为开机自启

[root@servera conf]# yum install httpd -y
......
[root@servera conf]# systemctl start httpd
[root@servera html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

#将http服务监听的端口是否 Listen 82 考试时一般是不需要的,但是还是要进行检查

[root@servera ~]# netstat -anlp | grep 82
tcp        0      0 0.0.0.0:44821           0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::82                   :::*                    LISTEN      1014/httpd          
raw6       0      0 :::58                   :::*                    7           982/NetworkManager  
unix  2      [ ACC ]     STREAM     LISTENING     36882    1961/systemd         /run/user/0/bus
unix  3      [ ]         STREAM     CONNECTED     27482    902/VGAuthService    
unix  2      [ ]         STREAM     CONNECTED     41985    982/NetworkManager   
unix  3      [ ]         STREAM     CONNECTED     29185    982/NetworkManager   
unix  2      [ ]         DGRAM                    29321    982/NetworkManager   
unix  3      [ ]         STREAM     CONNECTED     25282    784/systemd-udevd    
unix  3      [ ]         STREAM     CONNECTED     29328    982/NetworkManager   
unix  3      [ ]         STREAM     CONNECTED     30796    982/NetworkManager   

没有监听是82端,就修改一下http的监听配置

[root@servera conf]# vim /etc/httpd/conf/httpd.conf
.........
# Listen 80
Listen 82

验证一下

[root@servera ~]# cat /etc/httpd/conf/httpd.conf | grep -A 3 -B 3 Listen
ServerRoot "/etc/httpd"
 
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 82
 
#
# Dynamic Shared Object (DSO) Support

 检查/var/www/html目录存在的文件,做实验如果没有自己创建

[root@servera ~]# ll -Z /var/www/html/
total 4
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 14 Sep  5 22:57 index.html

检查是否具备了selinux的http的上下属性

如果不具备selinux的httpd的安全上下文,则进行授权就可以了

[root@servera ~]# restorecon -Rv /var/www/html/

配置selinux防护的放开http的82端口

先检查selinux处于的模式

[root@servera yum.repos.d]# getenforce
 
Enforcing

selinux防护的配置主要是有semanage服务在管理的

如果semanage命令不存在时则需要安装该命令对应的软件

[root@servera conf]# semana #这里tab没有自动补全时就是该selinux配置的命令不存在,需要进行安装

yum查找该命令对应的软件服务

[root@servera conf]# yum provides semanage
 
Last metadata expiration check: 0:04:09 ago on Fri 19 Aug 2022 10:52:07 PM CST.
policycoreutils-python-utils-2.9-16.el8.noarch : SELinux policy core python utilities
Repo : base
Matched from:
Filename : /usr/sbin/semanage

安装semanage命令的软件服务就可以提供相关的命令了,不用启动相关服务的

[root@servera conf]# yum install -y policycoreutils-python-utils
 
......
Complete!

查看selinux防护策略中关于http的配置情况

[root@servera ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

注:如上的配置表示http服务对应的端口没有配置82端口的,需要进行配置一下。

设置http服务的新端口,并验证

[root@servera conf]# semanage port -a -t http_port_t -p tcp 82

命令解析:

-a:add新增配置

-t: 执行需要修改配置的类型

-p:指定对应的协议类型

-d:表示删除带哦semanage的策略配置

semanage
默认目录的安全上下文查询与修改

补充说明
semanage命令是用来查询与修改SELinux默认目录的安全上下文。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

semanage {login|user|port|interface|fcontext|translation} -l
semanage fcontext -{a|d|m} [-frst] file_spec

选项:
    -l:查询。
    fcontext:主要用在安全上下文方面。
    -a:增加,你可以增加一些目录的默认安全上下文类型设置。
    -m:修改。
    -d:删除。

 检查

[root@servera ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      82, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989

验证是否可以访问web服务

[root@servera html]# curl http://servera.lab.example.com:82
 
welcome httpd 82

四,创建用户账户

题目:

要求:创建下列用户、用户组,并按如下要求相关完成设置

• 用户组名为 sysmgrs

• natasha 用户的附属组是 sysmgrs

• harry 用户的附属组是 sysmgrs

• john 用户的 shell 是非交互式shell,且不是 sysmgrs 组的成员

• natasha、harry、john 的密码是 redhat

题目内容解析:

• 创建用户组需要groupadd命令操作

• 创建用户useradd命令,指定附属组时需要在创建用户的是-G指定

• 创建的用户是非交互式shell,也就是不能登入的、就可以使用/sbin/nologin

• 设置密码可以passwd命令即可

实操演示过程:

创建sysmgrs用户组

[root@servera conf]# groupadd sysmgrs

创建用户配置指定的配置

[root@servera conf]# useradd -G sysmgrs natasha
[root@servera conf]# useradd -G sysmgrs harry
[root@servera conf]# useradd -s /sbin/nologin john

命令解析:

groudadd:创建用户组

useradd:创建用户

-G:表示指定用户的附属组

-s:表示指定用户shell的解释器,也就是shell环境

注:如果在创建用户没有指定用户组时,默认是同时创建相同的用户组信息

设置指定用户的密码

方式一:设置用户的密码

[root@servera conf]# echo redhat | passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
 
 
[root@servera conf]# echo redhat | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
 
 
[root@servera conf]# echo redhat | passwd --stdin john
Changing password for user john.
passwd: all authentication tokens updated successfully.

命令解析:

--stdin : 从标准输入读取令牌(只有root(根)用户才能进行此操作)

echo:打印并输出内容

或者

[root@servera conf]# id natasha && id harry && id john
 
uid=1000(natasha) gid=1001(natasha) groups=1001(natasha),1000(sysmgrs)
uid=1001(harry) gid=1002(harry) groups=1002(harry),1000(sysmgrs)
uid=1002(john) gid=1003(john) groups=1003(john)

方式二、密码的创建也可以是如下的操作

[root@servera conf]# passwd john
 
Changing password for user john.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
 

或者

[root@servera html]# for i in natasha harry john; do echo redhat | passwd --stdin $i; done
 
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
Changing password for user harry.
passwd: all authentication tokens updated successfully.
Changing password for user john.
passwd: all authentication tokens updated successfully.

验证密码是否设置的正确

格式:su - 用户名称

注:如果是登入的是root用户,然后切换到普通用户的话,系统默认不用校验密码的

五,配置cron作业计划

题目:

要求如下:

• 配置cron 作业,以用户natasha身份运行,该作业每隔5分钟运行并执行以下命令:

logger “EX200 in progress”

• 配置cron 作业,以用户natasha来执行该任务,每天15:36分时执行以下命令:

logger "hello rhcsa"

题目内容解析:

• 创建cron定时任务,指定运行用户为natasha,第一个每5分钟执行一次

• 创建cron定时任务,指定用户natasha,并定时在每天的15:36执行一次

实操演示过程

cron配置如下:

[root@servera ~]# crontab -e -u natasha
 
*/5 * * * * logger "EX200 in progress"
36 15 * * * logger "hello rhcsa"

命令解析:

-u:表示默认执行该定时任务的用户,一般默认是当前登入的用户

-e :表示编辑定时任务配置文件内容,编辑的内容也是当前用户下的

-l : 表示查看当前用户下的定时任务列表

cron定时任务的时间格式为:分 时 日 月 周

注意:week (0 - 6) (Sunday=0 or 7)也就是说星期日的值为0或者是7

验证

[root@servera ~]# crontab -l -u natasha
 
*/5 * * * * logger "EX200 in progress"
36 15 * * * logger "hello rhcsa"

知识扩展:

每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME,并且是创建才会存在对应的文件的

使用crontab命令创建用户计划任务

格式:crontab [-u user] [-l | -r | -e] [-i]

选项解析:

-l #列出所有任务,默认为当前用户的

-e #编辑任务,默认为当前用户的

-r #移除所有任务,默认为当前用户的

-i #同-r一同使用,以交互式模式移除指定任务

-u #user指定用户管理cron任务,仅root可运行

六,创建协作目录权限

题目:

要求如下:

• /home/managers目录属于 sysmgrs 组

• 此目录可以被sysmgrs 的组成员读取、写入和访问,但是其他任何用户不具备这些权限。(不包括 root 用户)

• 在/home/managers 目录中创建的文件的所属组自动变成sysmgrs 组

题目内容解析:

• /home/managers目录属于sysmgrs组,首选需要确认该用户组和目录存在不,不存在就创建了,同时这里只说了属于sysmgrs组,所以这里使用chgrp命令就可以了

• 该目录对sysmgrs组有读写执行的权限那么就是权限组的位置是rwx权限了7,其他人没有任何权限那就是---权限/0,用户权限是rwx,因为是目录的

• 该目录具下创建的文件自动继承了目录属组的权限,那就是继承权限,特殊权限中具有继承权限的就是sgid权限,数字用2表示,所以设置权限时的数字为2770了

实操演示过程:

创建目录并设置目录的用户组

确认sysmgrs用户组存在不

[root@servera home]# cat /etc/gshadow | grep sysmgrs
 
sysmgrs:!::natasha,harry

创建目录

[root@servera ~]# mkdir /home/managers/

设置属组

[root@servera ~]# chgrp sysmgrs /home/managers

设置权限

[root@servera ~]# chmod 2770 /home/managers

命令解析:

chgrp : 表示修改文件或目录的所属组

chmod: 表示修改文件的权限

2770:前面2是隐藏权限是sgid,代表给目录设置rwx rwxs - - -权限,

隐藏权限包含:SUID(4)、SGID(2)、SBIT(1)

rws(1、所有者)rws(2、所属组)rwt(3、其他用户)

1(rws)suid权限:即使不是文件所有者也可以暂时拥有文件所有者的权利

2(rws)sgid权限:在拥有这个属性的目录内创建的东西,所属组都属于这个目录的所属组,不属于创建人本身。

3(rwt)sticky权限:在拥有这个属性的目录内创建的东西,除了root和创建者本身,谁都不能删

注:在chmod时,特殊权限写在第一位。

或者是

[root@servera ~]# mkdir /home/managers/
[root@servera ~]# chown root:sysmgrs /home/managers
[root@servera ~]# chmod 770 /home/managers
[root@servera ~]# chmod g+s /home/managers
[root@servera conf]# ls -l /home/mamagers
total 0
drwxrws---. 2 root sysmgrs 6 May 1 03:59 managers

注:在/home/managers 目录中创建的文件的所属组自动变成sysmgrs 组表示需要用户组的超级权限,即sgid权限

 扩展: 

知识扩展:

SUID特殊权限(u+/-s):功能是让普通用户以命令文件的属主的身份去执行该命令,而并非以普通用户自己的身份去执行命令,仅用于系统命令(不安全)。

SGID特殊权限(g+/-s):功能让任何人在这个目录中创建的文件的属组跟这个目录的属组相同,即继承权限,仅用于目录(用于文件共享时)。

Sticky特殊权限(o+/-t):功能是在某个目录中,让任何人只能删除自己的文件,而不能删除其他人的文件。对此目录添加t权限即可。

隐藏的特殊权限

i 权限 : 功能只可以查看文件内容,但不能删除文件和修改内容

a 权限 : 功能可以查看内容, 可以追加内容,但其他的什么都不可以干(通常用于系统的日志文件)

chattr命令控制,lsattr查看

隐藏权限:

chmod 2770,前面2是隐藏权限是sgid,代表给目录设置rwx rwxs - - -权限,
隐藏权限:SUID(4)、SGID(2)、SBIT(1)
rws(1、所有者)rws(2、所属组)rwt(3、其他用户)
1:即使不是文件所有者也可以暂时拥有文件所有者的权利
2、在拥有这个属性的目录内创建的东西,所属组都属于这个目录的所属组,不属于创建人本身。
3、在拥有这个属性的目录内创建的东西,除了root和创建者本身,谁都不能删
在chmod时,隐藏权限写在第一位。

七,配置NTP

题目:

• 配置servera作为NTP的客户端,跟时间服务器172.25.254.254同步时间。

题目内容解析:

• 首选需要安装时间服务chrony,运行并设置为开机自启

• 配置同步时间服务的配置文件,设置时间的服务器为172.25.254.254

实操演示过程:

安装chrony时间同步服务

[root@servera managers]# yum install -y chrony
 
............
Complete!

启动chrony服务并设置为开机自启

[root@servera ~]# systemctl enable chronyd
[root@servera ~]# systemctl start chronyd

配置chrony时间同步服务器的配置文件

[root@servera managers]# vim /etc/chrony.conf
 
新增的内容如下:
server 172.25.250.254 iburst

重启chrony服务

[root@servera managers]# systemctl restart chronyd

验证与时间服务器的时间差

[root@servera managers]# chronyc sources -v
 
  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- time.cloudflare.com           3   6    17    16  +1620us[+1613us] +/-   94ms
^* 111.230.189.174               2   6    17    15   -647us[ -653us] +/-   17ms
^+ time.neu.edu.cn               1   6    17    16   +594us[ +588us] +/-   31ms
^? 172.25.254.254                0   7     0     -     +0ns[   +0ns] +/-    0ns
 
[root@servera yum.repos.d]# nslookup 172.25.254.254

八,配置autofs

题目

按照以下要求自动挂载远程用户的家目录,要求如下:

• NFS 服务器 172.25.254.254 的共享目录是/rhome,此文件系统包含为用户 remoteuser 预配置的家目录

• remoteuser 的家目录是 172.25.254.254:/rhome/remoteuser

• remoteuser 的家目录应该自动挂载到/rhome 下的/rhome/remoteuser

• 家目录必须可供其用户写入

• remoteuser 的密码是 redhat

注:练习时没有 remoteuser 用户,将配置文件做好即可
• nfs服务器端提供了共享目录,并且在共享目录下存在remoteuser用户的家目录,也就是说servera的remoteuser的家目录为:/rhome/remoteuser

题目内容解析: 

• nfs共享提供的目录需要自动挂载到servera上,这就需要使用到autofs自动挂载服务

• 家目录是可供其他用户写入的,所以autofs的配置文件需要rw权限

• 设置remoteuser用户的密码是redhat

实验准备:

实验环境里如果没有挂的服器我们可以在serverb上建立一个nfs服务端,serverb是有一个网卡配置IP地址是172.25.254.254

[root@serverb ~]# yum install nfs-utils rpcbind -y
..........
[root@serverb ~]# systemctl start rpcbind
[root@serverb ~]# systemctl enable rpcbind
[root@serverb ~]# systemctl start nfs-server
[root@serverb ~]# systemctl enable nfs-server

防火墙默认是开启的需要配置一下防火墙策略

[root@serverb ~]# firewall-cmd --permanent --add-service=rpc-bind
[root@serverb ~]# firewall-cmd --permanent --add-service=mountd
[root@serverb ~]# firewall-cmd --permanent --add-service=nfs
[root@serverb ~]# firewall-cmd --reload

配置nfs共享目录

[root@serverb system]# mkdir /rhome
[root@serverb system]# vim /etc/exports
/rhome *(rw,async)
[root@serverb system]# exportfs -rv
exporting *:/rhome
[root@serverb system]# systemctl restart rpcbind
[root@serverb system]# systemctl restart nfs-server

根据题目的内容remoteuser用户在/etc/passwd文件中存在的,并且家目录是不存在的,所以在serverb创建一个和servera上一样的用户,但是serverb有存在remoteuser的家目录的,

[root@serverb rhome]# useradd -u 1011 -d /rhome/remoteuser remoteuser
[root@serverb rhome]# id remoteuser
uid=1011(remoteuser) gid=1011(remoteuser) groups=1011(remoteuser)
[root@serverb rhome]# ll /rhome/
total 0
drwx------. 2 1001 1001 62 Sep 3 16:38 remoteuser

servera的/etc/passwd配置文件中的remoteuser的配置,这里只能是写入,不能通过useradd去创建的

[root@servera rhome]# cat /etc/passwd | grep remoteuser
remoteuser:x:1011:1011::/rhome/remoteuser:/bin/bash
[root@servera rhome]# id remoteuser
uid=1011(remoteuser) gid=1011(remoteuser) groups=1011(remoteuser)
 
[root@servera rhome]# ll /rhome/
total 0

实操演示过程:

先检查remoteuser用户是否存在,考试一般都是存在的

[root@servera rhome]# id remoteuser
uid=1011(remoteuser) gid=1011(remoteuser) groups=1011(remoteuser)

• 设置用户密码根据题目的要求

[root@servera rhome]# echo redhat | passwd --stdin remoteuser
Changing password for user remoteuser.
passwd: all authentication tokens updated successfully.

检查需要挂载的nfs共享目录是否提供了并创建指定的目录

[root@servera ~]# mkdir /rhome/
[root@servera rhome]# showmount -e 172.25.254.254
Export list for 172.25.254.254:
/rhome *

• 安装autofs服务

[root@servera ~]# yum install -y autofs
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
.......
Complete!

• 编辑配置文件添加虚拟共享/rhome的映射关系

注:/etc/auto.master是autofs示例文件,同时记录路共享目录的映射关系

[root@servera rhome]# vim /etc/auto.master
#add
/rhome /etc/rhome.misc

参数解析:

/etc/auto.master:表示autofs自动挂载的父目录地址,并且同时制定子目录的配置文件路径

/etc/rhome.misc :表示autofs自动挂载的子目录配置文件,并配置挂载的具体目录

• 创建共享目录配置文件

注:共享目录需要通过/etc/rhome.misc这个文件找到真正的映射远程目录,这个文件默认是没有的,需要编辑创建一下

[root@servera managers]# vim /etc/rhome.misc
#add
remoteuser -rw,sync 172.25.254.254:/rhome/remoteuser

• 设置启动autofs服务并设置开机子启动

[root@servera ~]# systemctl enable autofs
[root@servera ~]# systemctl restart autofs

• 验证效果:

[remoteuser@servera ~]$ df -Th
Filesystem                       Type      Size  Used Avail Use% Mounted on
devtmpfs                         devtmpfs  877M     0  877M   0% /dev
tmpfs                            tmpfs     896M     0  896M   0% /dev/shm
tmpfs                            tmpfs     896M  8.7M  887M   1% /run
tmpfs                            tmpfs     896M     0  896M   0% /sys/fs/cgroup
/dev/mapper/cl-root              xfs        47G  2.9G   45G   7% /
/dev/sda1                        xfs      1014M  216M  799M  22% /boot
tmpfs                            tmpfs     179M     0  179M   0% /run/user/0
172.25.254.254:/rhome/remoteuser nfs4       47G  3.1G   44G   7% /rhome/remoteuser

九,配置/var/tmp/fstab

问题:

将文件/etc/fstab 复制到 /var/tmp/fstab。配置/var/tmp/fstab 的权限以满足如下条件

• /var/tmp/fstab 属于 root 用户和 root 组

• /var/tmp/fstab 不能被任何人执行

• 用户 natasha 有读写权限

• 用户 harry 没有读写权限

• 所有其他用户(当前或者未来)能够读取/var/tmp/fstab

题目内容解析:

• 先复制/etc/fstab复制到/var/tmp/fstab文件

• 设置/var/tmp/fstab用户和属组是root

• 不能被任何人执行需要全部去掉x权限

• natasha和harry的权限属于特殊的权限,这里是指定用户的,需要使用acl的权限

• 其他用户和读取那是需要r权限

实操演示过程:

复制文件

[root@servera ~]# cp /etc/fstab /var/tmp/fstab

检查文件的用户属组

[root@servera tmp]# chown root:root /var/tmp/fstab

设置任务都没有执行权限

[root@servera tmp]# chmod a-x /var/tmp/fstab

设置natasha用户的读写权限

[root@servera tmp]# getfacl fstab
 
# file: fstab
# owner: root
# group: root
user::rw-
group::r--
other::r--

设置natasha的读写权限

[root@servera ~]# setfacl -m u:natasha:rw /var/tmp/fstab
[root@servera tmp]# getfacl fstab
# file: fstab
# owner: root
# group: root
user::rw-
user:natasha:rw-
group::r--
mask::rw-
other::r--

设置harry用户的没有读写权限

[root@servera ~]# setfacl -m u:harry:0 /var/tmp/fstab
[root@servera tmp]# getfacl fstab
# file: fstab
# owner: root
# group: root
user::rw-
user:natasha:rw-
user:harry:---
group::r--
mask::rw-
other::r--

命令解析:

setfacl:表示需要设置文件或目录的acl权限

-m:修改facl规则,一般后续需要接u为用户,g为组,o为其他人的acl权限

u:harry:0:表示需要修改用户的acl规则,用户的名称,用户设置的权限,0表示没有权限

验证特殊权限

[root@servera tmp]# getfacl fstab
 
# file: fstab
# owner: root
# group: root
user::rw-
user:natasha:rw-
user:harry:---
group::r--
mask::rw-
other::r--

知识扩展

setfacl -m # 修改添加权限

setfacl --set #先清除再重设所有权限

setfacl -b # 清除所有已有权限

setfacl -x # 删除后续acl

十,配置用户账户

题目:

• 配置用户账户alex,用户的ID为1234,此用户的密码应当为redhat.

实操演示过程:

[root@servera ~]# useradd -u 1234 alex
[root@servera ~]# echo redhat | passwd --stdin alex

命令解析:

useradd:表示来创建用户

-u:表示用来指定用户的uid值

passwd:表示用来设置用户的密码,--stdin需要在root用户下才可以使用的

或者

[root@servera tmp]# useradd -u 1234 alex
[root@servera tmp]# passwd alex
Changing password for user alex.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

知识扩展

-u UID

-o 配合-u 选项,不检查UID的唯一性

-g GID 指明用户所属基本组,可为组名,也可以GID

-c "COMMENT“ 用户的注释信息

-d HOME_DIR 以指定的路径(不存在)为家目录

-s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中

-G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在

-N 不创建私用组做主组,使用users组做主组

-r 创建系统用户 CentOS 6之前: ID<500,CentOS7 以后: ID<1000

-m 创建家目录,用于系统用户

-M 不创建家目录,用于非系统用户

-p 指定加密的密码

十一,查找文件

题目:

• 查找属于 harry 用户所属的目录,并拷贝到/root/findlist/目录下

实操演示过程:

[root@servera tmp]# mkdir /root/findlist
[root@servera ~]# find / -user harry -type d -exec cp -av {} /root/findlist/ \;

命令解析:

find:查找需要的内容

/:表示需要查找的范围

-user:表示匹配的用户规则

-type:表匹配的类型

d:表示匹配目录

-exec:表示查找匹配之后需要关联的动作

{}:表示前面find查到的内容形成的数组

\;:表示结束标志

cp选项:

验证

[root@servera ~]# cd /root/findlist/
[root@servera findlist]# ll
total 0
drwx------. 2 root root 62 May 2 02:14 harry

find语法:

find 路径 选项 动作

find 查询的路径 查询的条件 条件相关的参数 动作

路径:

不指定路径 默认查找当前目录的文件 在查找的时候是递归查找(目录及其子目录下查找)

动作:

对find找到的文件执行指定的操作,可以是复制、删除等

选项:

选项的作用:定义以名称、类型、大小、时间、权限、用户、组等各种条件来查找。

-name 文件名 //按文件名查找,

十二,查找字符串

问题:

• 查找文件/etc/passwd 中包含字符串root 的所有行。并将所有这些行的内容 放到文件/root/list 中,/root/list不得包含空行。

实操演示过程:

[root@servera ~]# grep root /etc/passwd | grep -v “^$” > /root/list

命令解析:

grep:过滤指定的内容

|:管道符,用于连接后续的动作

-v:表示取反,也就是不匹配符合的内容

^$:表示开头并且是为空的行

>:重定向,覆盖,将匹配的内容写入到指定的文件中,文件不存在,则自动回创建的

或者

[root@servera ~]# cat /etc/passwd | grep root | grep -v "^$" > /root/list
查看写入的情况是否满足要求的
[root@ervera ~]# cat list
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

知识扩展

grep文本搜索工具

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行

模式:由正则表达式字符及文本字符所编写的过滤条件

grep [OPTIONS] <查找匹配的内容> [FILE...]

grep常用选项Options

-color=auto 对匹配到的文本着色显示

-m # 匹配#次后停止

-v 显示不被pattern匹配到的行,即取反

-i 忽略字符大小写

-n 显示匹配的行号

-c 统计匹配的行数

-o 仅显示匹配到的字符串

-q 静默模式,不输出任何信息

-A # after, 后#行

-B # before, 前#行

-C # context, 前后各#行

-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file

-w 匹配整个单词

-E 使用ERE,相当于egrep

-F 不支持正则表达式,相当于fgrep

-f file 根据模式文件处理

-r 递归目录,但不处理软链接

-R 递归目录,但处理软链接

十三,创建存档、归档

题目:

• 创建一个名为/root/backup.tar.bz2 的tar 包,用来压缩/usr/local 目录。

实操演示过程:

[root@servera ~]# tar -cvjf /root/backup.tar.bz2 /usr/local/
...............

命令解析:

tar:将文件或文件夹进行打包

-c:表示进行tar打包动作

v:打印打包的过程

j:表示采用bzip2压缩规则

f:表示是指定压缩包文件名称

-z:有gzip属性的

-J:具有xz属性的

-Z:有compress属性的

-v:显示所有过程

-x: 解压

-O:将文件解开到标准输出

-f: 输出到文件

验证

[root@servera ~]# ll /root/backup.tar.bz2
 
total 12
-rw-r--r--. 1 root root 0 May 2 14:22 backup.tar.bz2

十四,添加sudo免密操作

题目:

• 将 harry用户组提升成与管理员相同的权限,并且无密码执行特权命令。

实操演示过程:

[root@servera ~]# visudo
 
# %wheel ALL=(ALL) NOPASSWD: ALL
%harry ALL= NOPASSWD: ALL

命令解析:

%:表示对整个用户组生效掉

ALL=:表示指定的用户或用户组与什么用户具有相同的权限

NOPASSWD:表示无需要输入密码进行验证,也就是免密

验证

查看/etc/shadow文件时是需要root用户的权限的,普通用户是无法有这个权限

[root@servera ~]# su - harry
Last login: Wed Aug 3 21:30:57 CST 2022 on pts/0
[harry@servera ~]$ sudo tail -1 /etc/shadow

注:这里普通用户查看时是需要提示输入密码才行

nfsnobody:!!:19206::::::
[root@servera ~]# su - natasha
Last login: Wed Aug 3 21:31:17 CST 2022 on pts/0
[natasha@servera ~]$ sudo tail -1 /etc/shadow
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for natasha:

注:如果不是harry用户组的,去查看/etc/shadow文件时就需要提示输入密码了

十五,配置创建新用户的密码策略

题目:

十六,创建shell脚本_附

题目:

• 创建一个名为myshell 的脚本

• 该脚本放置在 /usr/local/bin 下

• 该脚本用于查找 /usr 下所有大小在50K~10m 之间且具有修改组ID权限的文件,

• 将这些文件放置于/root/myfiles下

题目内容解析:

• 在 /usr/local/bin目录下创建myshell.sh脚本文件

• 脚本编写的内容是find,查找 /usr 下所有大小在50K~10m 之间且具有修改组ID权限的文件

• 具有修改组ID权限的文件是说有特殊权限位SGID的文件,数字表示为2000

• 创建/root/myfiles目录

实操演示过程:

• 创建目录

[root@servera ~]# mkdir /root/myfiles

• 查看满足条件的文件

[root@servera ~]# find /usr -type f -and -perm -2000 -and -size +50k -size -10M /usr/libexec/openssh/ssh-keysign

• 编辑myshell脚本

[root@servera openssh]# cd /usr/local/bin/
[root@servera bin]# ls
[root@servera bin]# vim myshell.sh
#!/bin/bash
#time:2022-09-03
#auor:xionghj
find /usr -type f -and -perm -2000 -and -size +50k -size -10M -exec cp -av {} /root/myfiles/ \;

• 授权给执行的权限

[root@servera bin]# chmod +x myshell.sh

• 验证脚本功能

[root@servera bin]# sh myshell.sh
'/usr/libexec/openssh/ssh-keysign' -> '/root/myfiles/ssh-keysign'

知识扩展:

find查找满足条件的文件或者文件夹

-perm 按照文件权限查找

-perm -4000 :查找文件权限设置了suid的文件

-perm -2000 :查找文件权限设置了sgid的文件

-perm -0755 :查找权限等于0755的文件

-type 根据文件类型查找

d 目录(即文件夹)

f 普通文件,即word文档、txt文本文档、jpg图片、mp3音乐、avi视频。find /etc -type f

b 块设备文件,即硬盘、u盘、硬盘分区,例:find /dev -type b

c 字符设备文件,即终端tty,例:find /dev -type c

p 管道文件

l 符号链接(也称软链接),即快捷方式,例:find / -type l

s 套接字,ip+port。例:find / -type s

-exec 连接需要的做的动作

-and 并且

-or 或

-size 按文件大小查找,+表示大于 -表示小于 没有+-表示等于

十七,登录用户设置欢迎语_附

题目:

• 为 servera 机器设置欢迎界面,在机器登录时可以弹出 Hello RHCSA!

实操演示过程:

[root@servera ~]# vim /etc/motd
Hello RHCSA!

/etc/motd :通常在用户成功登录到Linux Shell(非交互登录)时

不管你是 TTY 还是 PTS 登录,

也不管是 Telnet 或 SSH 都显示这个文件里面的信息

该信息可以从/etc/motd文本文件中找到。

验证:重新登入会弹出

Connecting to 172.25.250.10:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
 
 
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Mon May 2 02:03:54 2022 from 172.25.250.1
Hello RHCSA!

十八,配置UMASK_附

设置用户默认创建文件UMASK_附

用户natasha默认创建文件权限为r--r--r--,默认创建目录权限为r-xr-xr-x

切换到natasha用户再进行操作

echo "umask 222" >> ~/.bashrc

source ~/.bashrc

十九,生成环境变量_附

题目

生成一个环境变量rhcsa,用户在调用这个变量时输出一句话“This is RHCSA!”

自定义一个命令rhce,用户在使用这个命令时输出一句话“This is RHCE!”

vim ~/.bashrc

export rhcsa='This is RHCSA!'

alias rhce='echo This is RHCE!'

二十,创建容器化服务

题目:

要求

利用注册表服务器上的nginx 镜像地址为registry.lab.example.com/library/nginx,创建名为 sunserver 的容器

• 将其配置为以 systemd 服务的形式运行,且仅面向现有用户 contsvc

• 该服务应命名为 container-sunserver.service,此服务在系统重启后将自动启动

将创建的容器服务配置为使用永久存储,要求如下:

• 在容器主机的 /home/contsvc下创建一个名为container_journal 的目录

• 容器服务应将主机目录 /home/contsvc/container_journal 挂载到容器上的 /var/log/journal 下面

• 启动容器服务时,应自动挂载永久存储

• 在容器上执行命令 : echo RHCSA > /var/log/journal/rhcsa.log,

• 容器上的 /var/log/journal/rhcsa.log 和容器主机上的/home/contsvc/container_journal/rhcsa.log均应显示:RHCSA

注意:#注册表服务器地址:registry.lab.example.com。账号: admin/redhat321

题目内容解析:

• 在servera上部署容器服务,centos8的容器服务是podman

• 在servera上创建一个sunserver容器,使用镜像是Nginx镜像,同时该容器是普通用户contsvc用户创建的

• 创建的sunserver容器需要设置为系统服务,通过系统命令进行启停操作,并设置为开机自启

• 创建的sunserver容器需要挂载存储目录/home/contsvc/container_journal映射到容器的/var/log/journal目录

• 在容器内执行echo RHCSA > /var/log/journal/rhcsa.log命令

实验准备;

考试的时候镜像仓库和podman容器服务都是搭建好的,但是自己实验需要自己完善的

安装podman容器服务

[root@servera ~]# yum install -y podman
...........
[root@servera ~]# podman --version
podman version 3.3.1

配置镜像加速器

[root@servera ~]# vim /etc/containers/registries.conf
#add
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "8hqtcyi2.mirror.aliyuncs.com"
[[registry.mirror]]
prefix = "docker.io"
location = "hub-mirror.c.163.com"

普通用户默认是没有使用podman的权限的,所以需要做一些配置调整,让其可以使用podman

[root@servera ~]# yum install -y crun

普通用户虚拟文件服务

[root@servera ~]# rpm -qa | fuse-overlayfs

普通用户虚拟网络服务

[root@servera ~]# rpm -qa | grep slirp4netns

开启虚拟文件服务调用

​[root@servera ~]# vim /etc/containers/storage.conf
#取消注释
mount_program = "/usr/bin/fuse-overlayfs"
 

配置那些普通用户使用podman的功能,/etc/subuid和/etc/subgid配置

[root@servera ~]# yum install -y shadow-utils
[root@servera ~]# useradd contsvc
[root@servera ~]# id contsvc
uid=1236(contsvc) gid=1236(contsvc) groups=1236(contsvc)
[root@servera ~]# cat /etc/subuid
contsvc:296608:65536
[root@servera ~]# cat /etc/subgid
contsvc:296608:65536

配置普通用户可以使用系统环境配置

[root@servera ~]# vim /etc/sysctl.conf
[root@severa ~]# sysctl -p
net.ipv4.ping_group_range = 0 200000

设置contsvc用户的密码

[root@servera ~]# echo redhat | passwd --stdin contsvc
Changing password for user contsvc.
passwd: all authentication tokens updated successfully.

验证普通用户是否可以使用podman服务

[root@servera ~]# ssh contsvc@servera
The authenticity of host 'servera (172.25.250.7)' can't be established.
ECDSA key fingerprint is SHA256:1507YKxFMsfKUk7KYZfRo0Dm+yaTW7qOrXWghM3GgBw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Waring: Permanently added 'servera,172.25.250.7' (ECDSA) to the list of known hosts.
contsvc@servera's password:
Hello RHCSA!
[contsvc@servera user]$ podman version
Client: Podman Engine
Version: 4.2.0
API Version: 4.2.0
Go Version: go1.18.4
Built: Tue Aug 30 22:20:51 2022
OS/Arch: linux/amd64

注:到这里基础的环境就准备好了,后面就可以开始进行实验了

实操演示过程:

登入到contsvc用户下,一定要ssh登入的,su -的方式不行

创建映射挂载的目录

[contsvc@servera ~]$ mkdir -pv /home/contsvc/container_journal
mkdir: created directory '/home/contsvc/container_journal'

• 登入到注册镜像中心

[contsvc@servera ~]$ podman login
Username:
Password:
Login Succeeded!

下载Nginx镜像到本地

[contsvc@servera ~]$ podman search nginx

考试的时候直接下载镜像可能下载不了,需要告诉podman从那里去下载

[contsvc@servera ~]$ podman pull docker.io/library/nginx:latest
 
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob 7247f6e5c182 skipped: already exists
Copying blob 7a6db449b51b skipped: already exists
Copying blob ca1981974b58 skipped: already exists
Copying blob d4019c921e20 skipped: already exists
Copying blob 7cb804d746d4 skipped: already exists
Copying blob e7a561826262 skipped: already exists
Copying config 2b7d6430f7 done
Writing manifest to image destination
Storing signatures
2b7d6430f78d432f89109b29d88d4c36c868cdbf15dc31d2132ceaa02b993763

• 创建运行的容器并挂载存储

[contsvc@servera ~]$ podman run -it -d --name sunserver -v /home/contsvc/container_journal:/var/log/journal:Z nginx
 
68f3da1e783508d2d0b1d66468eec62bcef082413a91f3867dc4bebe2d500fc3
[cotsvc@servera ~]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68f3da1e7835 docker.io/library/nginx:latest nginx -g daemon o... 5 seconds ago Up 5 seconds ago sunserver

考试的时候直接下载镜像可能下载不了,需要告诉podman从那里去下载,需要使用如下的创建容器的命令

[contsvc@servera ~]$ podman run -it -d --name sunserver -v /home/contsvc/container_journal:/var/log/journal:Z registry.lab.example.com/library/nginx

podman run --name <题目中要求的容器名>

-it ## 给他一个终端

-d ## 允许后台运行

-v /home/contsvc/container_journal:/var/log/journal:Z ## 挂载本地存储映射关系,再给一个大Z权限

registry.lab.example.com/library/nginx ## 上面podman search找到的镜像完整路径

 进入到sunserver容器内执行命令

[contsvc@servera ~]$ podman exec -it sunserver /bin/bash
root@68f3da1e7835:~# echo RHCSA > /var/log/journal/rhcsa.log

        

• 宿主机上验证rhcsa.log 文件

[contsvc@servera ~]$ cd container_journal/
[contsvc@servera container_journal]$ cat rhcsa.log
RHCSA

设置sunserver容器为系统服务,并设置为开机自启

• 创建当前用户的systemd目录

[contsvc@servera ~]$ mkdir -pv ~/.config/systemd/user
mkdir: created directory '/home/contsvc/.config/systemd'
mkdir: created directory '/home/contsvc/.config/systemd/user'

 切换到本地用户的systemd服务下

[contsvc@servera ~]$ cd ~/.config/systemd/user/

创建容器的systemd服务

[contsvc@servera user]$ podman generate systemd --name sunserver --files
/home/contsvc/.config/systemd/user/container-sunserver.service
[contsvc@servera user]$ ls
container-sunserver.service

加载新服务文件

[contsvc@servera user]$ systemctl --user daemon-reload

开启普通用户使用systemd自我管理权限

[contsvc@servera user]$ loginctl enable-linger

设置sunserver容器为开机自启

[contsvc@servera user]$ systemctl --user enable container-sunserver.service
Created symlink /home/contsvc/.config/systemd/user/default.target.wants/container-sunserver.service → /home/contsvc/.config/systemd/user/container-sunserver.service.

验证sunserver容器是否是systemd服务

[contsvc@servera user]$ podman stop sunserver
sunserver
[contsvc@servera user]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

通过systemd系统方式启动sunserver服务

[contsvc@servera user]$ systemctl --user start container-sunserver.service

查看sunserver服务的状态

[contsvc@servera user]$ systemctl --user status container-sunserver.service
● container-sunserver.service - Podman container-sunserver.service
Loaded: loaded (/home/contsvc/.config/systemd/user/container-sunserver.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-09-03 20:55:47 CST; 7s ago
Docs: man:podman-generate-systemd(1)
Process: 2506 ExecStart=/usr/bin/podman start sunserver (code=exited, status=0/SUCCESS)
Main PID: 2519 (conmon)
CGroup: /user.slice/user-1000.slice/user@1000.service/container-sunserver.service
├─2516 /usr/bin/slirp4netns --disable-host-loopback --mtu=65520 --enable-sandbox --enable-seccomp --enable-ipv6 -c -e 3 -r 4 --net>
├─2519 /usr/bin/conmon --api-version 1 -c 68f3da1e783508d2d0b1d66468eec62bcef082413a91f3867dc4bebe2d500fc3 -u 68f3da1e783508d2d0b1>
└─68f3da1e783508d2d0b1d66468eec62bcef082413a91f3867dc4bebe2d500fc3
├─2528 nginx: master process nginx -g daemon off;
└─2556 nginx: worker process

查看sunserver容器的状态

[contsvc@servera user]$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
68f3da1e7835 docker.io/library/nginx:latest nginx -g daemon o... 13 minutes ago Up 13 seconds ago sunserver

【在node2下面完成:】

一,设置root密码

题目:

将 venus 的 root 密码设置为 flectrag 。您需要获得系统访问权限才能进行此操作

进入venus的console界面

通过Ctrl+Alt+Del重启

在选择内核界面按e进入下面界面并在如下位置输入rd.break console=tty0

按Ctrl+x 执行

如果考试遇到报错直接执行下一步:chroot /sysroot,设置密码为flectrag

如果多次破解失败,请检查拼英,尤其是/.autorelabel

mount -o remount,rw /sysroot

chroot /sysroot

echo flectrag | passwd --stdin root

touch /.autorelabel

exit

reboot 

二,配置系统默认存储库

题目:

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

cd /etc/yum.repos.d/

vi venus.repo
    
[BaseOS]
name=BaseOS
baseurl=http://content/rhel8.0/x86_64/dvd/BaseOS
gpgcheck=0
enabled=1
 
[AppStream]
name=AppStream
baseurl=http://content/rhel8.0/x86_64/dvd/AppStream
gpgcheck=0
enabled=1

测试:

yum makecache ;yum -y install vim

三,调整逻辑卷

将逻辑卷 vo 及其文件系统的大小调整到 230 MiB。确保文件系统内容保持不变。注:分区大小很少与请求的大小完全相同,因此可以接受范围为 217 MiB 到 243 MiB 的大小。

查看当前文件系统信息及lv、vg信息

 判断vg大小后及应该对lv进行增大或减小的操作后

lvextend -L 230M /dev/myvol/vo


resize2fs /dev/myvol/vo
#文件系统同步

四,添加交换分区

向您的系统添加一个额外的交换分区 756MiB 。交换分区应在系统启动时自动挂载。不要删除或以任何方式改动系统上的任何现有交换分区。

判断各磁盘空间大小及后续题目限制(比如VDO卷题要求使用未分区的磁盘)

fdisk /dev/vdb

partprobe

#使用mkswap格式化新分区

mkswap /dev/vdb2

写入配置文件(建议使用UUID

 自动挂载

swapon -a

验证:

通过前后free查看swap容量大小也可验证变化

五,创建逻辑卷

题目:

  • 逻辑卷取名为 qa ,属于 qagroup 卷组,大小为 60 个扩展块

  • qagroup 卷组中逻辑卷的扩展块大小应当为 16 MiB

  • 使用 ext3 文件系统格式化新逻辑卷。该逻辑卷应在系统启动时自动挂载到 /mnt/qa 下

判断各磁盘空间大小决定使用哪个磁盘分区及后续题目限制(比如VDO卷题要求使用未分区的磁盘)

[root@venus ~]# fdisk /dev/vdb
 
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
 
Command (m for help): n
Partition number (3-128, default 3): 
First sector (2549760-10485726, default 2549760): 
Last sector, +sectors or +size{K,M,G,T,P} (2549760-10485726, default 10485726): 
 
Created a new partition 3 of type 'Linux filesystem' and of size 3.8 GiB.
 
Command (m for help): w
The partition table has been altered.
Syncing disks.
 
[root@venus ~]# partprobe 
[root@venus ~]# lsblk 
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda             252:0    0    16G  0 disk 
├─vda1          252:1    0    10G  0 part /
└─vda2          252:2    0   1.2G  0 part 
  └─vgroup-swap 253:0    0   512M  0 lvm  [SWAP]
vdb             252:16   0     5G  0 disk 
├─vdb1          252:17   0 487.8M  0 part 
│ └─myvol-vo    253:1    0   232M  0 lvm  /reports
├─vdb2          252:18   0   756M  0 part [SWAP]
└─vdb3          252:19   0   3.8G  0 part 
vdc             252:32   0    10G  0 disk 
[root@venus ~]# pvcreate /dev/vdb3 
  Physical volume "/dev/vdb3" successfully created.
[root@venus ~]# vgcreate -s 16M qagroup  /dev/vdb3 
  Volume group "qagroup" successfully created
[root@venus ~]# lvcreate -l 60 -n qa qagroup 
  Logical volume "qa" created.
[root@venus ~]# mkfs.ext3 /dev/qagroup/qa 
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 245760 4k blocks and 61440 inodes
Filesystem UUID: 93f3ed7b-2086-4d14-a5f5-6097fddf9cc3
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 
[root@venus ~]# mkdir /mnt/qa
[root@venus ~]# vim /etc/fstab 
 
# 
# /etc/fstab
# Created by anaconda on Thu Apr  4 08:39:20 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=884f47c9-a69d-4c5b-915d-6b7c9c74c923 /                       xfs     defaults        0 0
/dev/myvol/vo   /reports        ext4    defaults 1 2
/dev/vgroup/swap        none    swap    defaults 0 0
UUID=4fa8f3f7-9911-4d41-980d-f3bf3e2df8c9 swap swap defaults 0 0
UUID=93f3ed7b-2086-4d14-a5f5-6097fddf9cc3 /mnt/qa ext3 defaults 0 0  
[root@venus ~]# mount -a
[root@venus ~]# lsblk 
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda             252:0    0    16G  0 disk 
├─vda1          252:1    0    10G  0 part /
└─vda2          252:2    0   1.2G  0 part 
  └─vgroup-swap 253:0    0   512M  0 lvm  [SWAP]
vdb             252:16   0     5G  0 disk 
├─vdb1          252:17   0 487.8M  0 part 
│ └─myvol-vo    253:1    0   232M  0 lvm  /reports
├─vdb2          252:18   0   756M  0 part [SWAP]
└─vdb3          252:19   0   3.8G  0 part 
  └─qagroup-qa  253:2    0   960M  0 lvm  /mnt/qa
vdc             252:32   0    10G  0 disk 

六,创建VDO卷

题目:

  • 使用未分区的磁盘

  • 该卷的名称为 vdough

  • 该卷的逻辑大小为 50G

  • 该卷使用 xfs 文件系统格式化

  • 该卷(在系统启动时)挂载到 /vbread 下

查找与VDO相关软件包并安装

[root@venus ~]# yum search vdo
Last metadata expiration check: 0:38:28 ago on Sat 25 Feb 2023 01:33:09 AM CST.
============================================================== Name Exactly Matched: vdo ==============================================================
vdo.x86_64 : Management tools for Virtual Data Optimizer
============================================================= Name & Summary Matched: vdo =============================================================
libblockdev-vdo.x86_64 : The vdo plugin for the libblockdev library
================================================================== Name Matched: vdo ==================================================================
kmod-kvdo.x86_64 : Kernel Modules for Virtual Data Optimizer
alsa-plugins-vdownmix.i686 : Downmixer to stereo plugin for ALSA
alsa-plugins-vdownmix.x86_64 : Downmixer to stereo plugin for ALSA
[root@venus ~]# yum -y install vdo.x86_64 kmod-kvdo.x86_64

查看帮助文档

[root@venus ~]# vdo create --name=vdough --device=/dev/vdc --vdoLogicalSize=50G 
Creating VDO vdough
Starting VDO vdough
Starting compression on VDO vdough
VDO instance 0 volume is ready at /dev/mapper/vdough
[root@venus ~]# lsblk 
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda             252:0    0    16G  0 disk 
├─vda1          252:1    0    10G  0 part /
└─vda2          252:2    0   1.2G  0 part 
  └─vgroup-swap 253:0    0   512M  0 lvm  [SWAP]
vdb             252:16   0     5G  0 disk 
├─vdb1          252:17   0 487.8M  0 part 
│ └─myvol-vo    253:1    0   232M  0 lvm  /reports
├─vdb2          252:18   0   756M  0 part [SWAP]
└─vdb3          252:19   0   3.8G  0 part 
  └─qagroup-qa  253:2    0   960M  0 lvm  /mnt/qa
vdc             252:32   0    10G  0 disk 
└─vdough        253:3    0    50G  0 vdo  
[root@venus ~]# mkfs.xfs -K /dev/mapper/vdough 
meta-data=/dev/mapper/vdough     isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
挂载信息写入配置文件

vim /etc/fstab

关键点  defaults,x-systemd,requires=vdo.service

创建挂载目录

mkdir /vbread

挂载并查看

[root@venus ~]# mount -a
[root@venus ~]# lsblk 
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda             252:0    0    16G  0 disk 
├─vda1          252:1    0    10G  0 part /
└─vda2          252:2    0   1.2G  0 part 
  └─vgroup-swap 253:0    0   512M  0 lvm  [SWAP]
vdb             252:16   0     5G  0 disk 
├─vdb1          252:17   0 487.8M  0 part 
│ └─myvol-vo    253:1    0   232M  0 lvm  /reports
├─vdb2          252:18   0   756M  0 part [SWAP]
└─vdb3          252:19   0   3.8G  0 part 
  └─qagroup-qa  253:2    0   960M  0 lvm  /mnt/qa
vdc             252:32   0    10G  0 disk 
└─vdough        253:3    0    50G  0 vdo  /vbread

七,配置系统调优

题目:

为您的系统选择建议的 tuned 配置集并将它设为默认设置。

[root@venus ~]# tuned-adm recommend 
virtual-guest
[root@venus ~]# tuned-adm profile virtual-guest 
[root@venus ~]# tuned-adm active 
Current active profile: virtual-guest

最后三遍sync,并重启检查是否能正常进系统。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值