本篇主要以RHCSA題目為線索,介紹其中涉及的知識點。
紅色引用的字為考試的題目內容。
重置root密碼
RHEL7 進入單用戶方式和重置密碼方式相對於以往版本來說,發生了較大變化
操作方法
第一步
啟動 RHEL7 系統,並在 GRUB2 啟動選項時,按下鍵盤上的 e 鍵進入編輯模式。
第二步
光標定位到以 linux16 開頭的這一行,按下鍵盤上的 End 鍵,直接跳至這一行的末尾,再按下空格鍵,輸入rd.break,執行 Ctrl+X 重啟系統。
在虛擬機下破解 root 密碼的話,則建議輸入 rd.break console=tty0,再重啟系統!
(另一個方法就是從這行最末尾開始,刪除所有的代碼到 ro 為止, 然后再加上rd.break )

第三步
重啟后進入 switch_root:/# 模式下,重新掛載分區並賦予讀寫權限,改變程序執行時所參考的根目錄位置。
- switch_root:/# mount -o remount,rw /sysroot
- switch_root:/# chroot /sysroot
此時進入 sh-4.2# 模式下,對 root 帳戶進行密碼重置,輸入兩次相同的密碼以確認修改生效。修改密碼完畢后,記得讓 SELinux 生效。
- switch_root:/# passwd root
- switch_root:/# touch /.autorelabel (這一步一定不能少,不然不能重啟)
按 Ctrl+D 退出,然后再重啟操作系統,破解密碼完畢,破解后首次進入系統會特別慢!

按要求將 eth0 網卡配置文件修改為以靜態方式獲取地址的配置文件,具體信息如下:
IP地址:192.168.1.100
子網掩碼:255.255.255.0
默認網關:192.168.1.1
域名服務器:192.168.1.254
RHEL7修改網卡配置文件
設置 IP 地址
- [root@server0 ~]# nmcli connection modify “DHCP-eth0” ipv4.addresses “192.168.1.100/24 192.168.1.1”
設置域名服務器
- [root@server0 ~]# nmcli connection modify “DHCP-eth0” ipv4.dns “192.168.1.254”
把地址獲取方式由動態修改為靜態
- [root@server0 ~]# nmcli connection modify “DHCP-eth0” ipv4.method manual
檢查配置文件是否符合要求
- [root@server0 ~]# nmcli connection show “DHCP-eth0” |less
停用當前配置,然后再次啟用
- [root@server0 ~]# nmcli connection down “DHCP-eth0”
啟用修改后的配置,讓其生效
- [root@server0 ~]# nmcli connection up “DHCP-eth0”
最后再檢驗一下配置結果
- [root@server0 ~]# ip addr
- [root@server0 ~]# cat /etc/resolv.conf
- [root@server0 ~]# ip route
RHEL7新建網卡配置文件
新增一個動態配置文件,即 DHCP 自動分配IP地址
- [root@server0 ~]# nmcli connection add con-name “DHCP-eth0” type ethernet autoconnect yes ifname eth0
con-name:配置文件的名字,帶空格或連接符的名字要加雙引號,如 “DHCP-eth0″;
type:網絡類型,上述是 Ethernet 以太網類型;
autoconnect:自動啟用該配置,即開機是否自動啟用這套配置,默認情況下都是 no;
ifname:網卡接口名字,比如說這套配置是給 eth0 用的,那么就寫 ifname eth0;
新增一個靜態配置文件,即手動設置指定的 IP 地址和相關信息
IP地址:192.168.1.100
子網掩碼:255.255.255.0
默認網關:192.168.1.1
- [root@server0 ~]# nmcli connection add con-name “Static-eth0” type ethernet autoconnect yes ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1
ip4:IPv4的地址,如果是 IPv6 的地址,就是 ip6;
gw4:IPv4的網關,如果是 IPv6 的網關,就是 gw6;
檢查剛才新建的兩套配置是否存在
- [root@server0 ~]# nmcli connection show
檢查當前活動的網卡配置文件
- [root@server0 ~]# nmcli connection show –active
啟用新的網卡配置文件
啟用一套新的配置文件時,建議先停用當前配置文件,再啟用新的配置文件。比如我當前使用的是靜態配置文件(Static-eth0),那么就先停用當前配置,再啟用動態配置文件(DHCP-eth0)。
- [root@server0 ~]# nmcli connection down “Static-eth0”
- [root@server0 ~]# nmcli connection up “DHCP-etho”
刪除動態的配置文件
- [root@server0 ~]# nmcli connection delete “DHCP-etho”
2. 配置SELinux環境,將SELinux設為enforcing模式。
RHEL7配置SElinux環境
SElinux 是一個強制訪問控制安全模塊,提高操作系統自身的牢固性是非常重要的。SElinux 的啟用和禁用也是紅帽認證必考的知識點
操作方法
第一步
查看 SElinux 當前的運行情況。
- [root@wanghualang ~]# getenforce
Enforcing:已啟用
Permissive:已禁用
第二步
啟用 SElinux:
- [root@wanghualang ~]# setenforce 1
禁用 SElinux:
- [root@wanghualang ~]# setenforce 0
另外注意在配置文件中也要修改 /etc/selinux/conf
3. 建立Yum軟件倉庫,該Yum倉庫將作為默認倉庫。
YUM REPO: http://content.example.com/rhel7.0/x86_64/dvd
舉個例子,下面是 Yum 倉庫網址:
Yum repo:http://content.example.com/rhel7.0/x86_64/dvd
第一種操作方法
使用vi編輯器純手工創建
第一步
進入 /etc/yum.repos.d/ 目錄下,新建一個名為 yum.repo 源配置文件
- [root@wanghualang ~]# cd /etc/yum.repos.d/
- [root@wanghualang yum.repos.d]# touch yum.repo
第二步
使用 VI 編輯器,配置 yum.repo,這里提供一個簡易的配置文件模版,一般情況下是夠用的:
[InstallMedia]
name=源的名字
baseurl=源的地址
enable=源是否可用
gpgcheck=檢測源的有效性和安全性
編輯相關內容到 yum.repo 文件,一個簡易的本地 YUM 源就這樣配置好了!
[InstallMedia]
name=content.example.com
baseurl=http://content.example.com/rhel7.0/x86_64/dvd
enable=1
gpgcheck=0
關於 baseurl 的值,一般有三種,即本地路徑、FTP、http 三種:
#baseurl=file:///
#baseurl=ftp://
#baseurl=http://
順便說下,file:/// 的第三條反斜杠是表示根目錄。
第二種操作方法
使用 Yum 命令生成模版
第一步
使用 yum-config-manager 創建 repo 模版
- [root@server0 yum.repos.d]# yum-config-manager –add-repo “http://content.example.com/rhel7.0/x86_64/dvd”
第二步
查看新創建的 repo 模版
- [root@server0 /]# cat /etc/yum.repos.d/blog.wanghualang.com_software_dvd.repo
第三步
因為紅帽的軟件包經過了 Private Key 簽名,所以要導入公鑰進行驗證,如果嫌麻煩,也可以跟第一種操作方法一樣,把 gpgcheck=0 編輯到配置文件中去。
- [root@server0 yum.repos.d]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-*
其他yum命令:
顯示已安裝的軟件包 yum list installed
顯示源地址擁有的軟件包 yum list
安裝軟件,pachages 為軟件包的名 yum install packages
卸載軟件 yum remove packages
查找軟件 yum search packages
查詢軟件的依賴關系 yum info packages
清空緩存 yum clean all
5. 按要求創建用戶組及多個用戶,設置用戶的候選組,設置用戶的默認shell。
創建組adminuser
創建用戶natasha和harry屬於該組(該組為他們的第二個組)
創建用戶sarah,不屬於adminuser,沒有交互的shell
他們的密碼都是tianyun
[root@desktop0 ~]# groupadd adminuser
[root@desktop0 ~]# useradd natasha
[root@desktop0 ~]# useradd harry
[root@desktop0 ~]# usermod -aG adminuser natasha
[root@desktop0 ~]# usermod -aG adminuser harry[root@desktop0 ~]# useradd sarah -s /sbin/nologin
修改密碼:
[root@desktop0 ~]# echo tianyun | passwd –stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@desktop0 ~]# echo tianyun | passwd –stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@desktop0 ~]# echo tianyun | passwd –stdin sarah
Changing password for user sarah.
passwd: all authentication tokens updated successfully.驗證
[root@desktop0 ~]# cat /etc/group | grep adminuser
adminuser:x:1001:natasha,harry
[root@desktop0 ~]# id sarah
uid=1003(sarah) gid=1004(sarah) groups=1004(sarah)
[root@desktop0 ~]# id natasha
uid=1001(natasha) gid=1002(natasha) groups=1002(natasha),1001(adminuser)
6. 按要求設置文件及目錄權限,會用到文件acl權限。
拷貝/etc/fstab到/var/tmp/fstab,屬主和屬組為root;
任何人都不能執行;natasha能讀寫;
harry沒有任何權限;其他和將來的用戶能夠讀。
- [root@desktop0 ~]# cp -a /etc/fstab /var/tmp/fstab
- [root@desktop0 ~]# chmod a-x /var/tmp/fstab
- [root@desktop0 ~]# setfacl -m u:natasha:rw /var/tmp/fstab
- [root@desktop0 ~]# setfacl -m u:harry:— /var/tmp/fstab
驗證一下:
[root@desktop0 ~]# ll /var/tmp/fstab
-rw-rw-r–+ 1 root root 440 Aug 3 01:33 /var/tmp/fstab
[root@desktop0 ~]# getfacl /var/tmp/fstab
getfacl: Removing leading ‘/’ from absolute path names
# file: var/tmp/fstab
# owner: root
# group: root
user::rw-
user:natasha:rw-
user:harry:—
group::r–
mask::rw-
other::r–
7. 設置用戶的計划任務cron。
natasha每天14:20時執行命令:/bin/echo hello
附加題:創建計划任務,要求natasha在1.3.5日 14:30分執行/bin/echo hello
- [root@desktop0 ~]# crontab -u natasha -e
20 14 * * * /bin/bash hello
- [root@desktop0 ~]# crontab -l -u natasha
20 14 * * * /bin/bash hello
附加題:
- #crontab -e -u natasha
30 14 1,3,5 * * /bin/echo hello
- #crontab -l
8. 設置目錄權限。
創建共享目錄/home/admins;屬組為adminuser;
adminuser組成員對目錄有讀寫和執行的權限,其他所有用戶沒有任何權限(root除外);
在/home/admins目錄中創建的文件,會自動繼承adminuser組
[root@desktop0 ~]# mkdir /home/admins
[root@desktop0 ~]# chown :adminuser /home/admins/
[root@desktop0 ~]# ll -d /home/admins/
drwxr-xr-x. 2 root adminuser 6 Aug 3 02:14 /home/admins/
[root@desktop0 ~]# chmod 2770 -R /home/admins/
[root@desktop0 ~]# ll -d /home/admins/
drwxrwx—. 2 root adminuser 6 Aug 3 02:14 /home/admins/
9. 按指定要求安裝升級內核,保證grub2啟動時為默認項目。
YUM REPO: http://content.example.com/rhel7.0/x86_64/errata
vi /etc/yum.repos.d/content.example.com_rhel7.0_x86_64_errata.repo 加入gpgcheck=0
yum list kernel
yum -y install kernel
grub2-set-default “Red Hat Enterprise Linux Server, with Linux 3.10.0-123.1.2.el7.x86_64”
—檢查
grub2-editenv list
10. 使用LDAP作為本地用戶認證方式LDAP Server: classroom.example.com
LDAP Base DN: dc=example,dc=com
Root CA: http://classroom.example.com/pub/example-ca.crt
11. 設置NTP服務,同步指定服務器時間。NTP Server: classroom.example.com
NTP服務是用來使計算機時間同步化的一種協議,它可以使計算機對其服務器或時鍾源做同步化,它可以提供高精准度的時間校正,且可介由加密確認的方式來防止惡毒的協議攻擊。
設置NTP服務,同步服務器(classroom.example.com)時間
第一步
安裝 NTP 軟件包
- yum -y install chrony
第二步
配置同步服務器的地址,配置文件中默認的官方服務器地址要注釋掉。
- vi /etc/chrony.conf
- #server 0.rhel.pool.ntp.org iburst
- #server 1.rhel.pool.ntp.org iburst
- #server 2.rhel.pool.ntp.org iburst
- #server 3.rhel.pool.ntp.org iburst
- server classroom.example.com iburst
第三步
啟動服務,並設置服務開機自啟
- [root@server0 ~]# systemctl enable chronyd
- [root@server0 ~]# systemctl restart chronyd
驗證 NTP 服務是否符合要求
[root@server0 ~]# timedatectl status
Local time: Mon 2015-08-24 10:54:32 CST
Universal time: Mon 2015-08-24 02:54:32 UTC
RTC time: Mon 2015-08-24 02:54:33
Timezone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
另外可以使用chronyc sources查看
[root@desktop0 ~]# systemctl restart chronyd.service
[root@desktop0 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* classroom.example.com 8 6 7 1 -75us[ +677ms] +/- 1101us
12. 配置和LDAP用戶認證配合的autofs自動目錄掛接
LDAP Server: classroom.example.com
LDAP Base DN: dc=example,dc=com
Root CA: http://classroom.example.com/pub/example-ca.crt
RHCSA中,只用完成LDAP客戶端的部分
LDAP是輕量目錄訪問協議,它提供了不同層次的訪問控制或者 ACI,且訪問可以在服務器端控制,這比用客戶端的軟件保證數據的安全要安全得多。
這個實驗中,主要是配置客戶端,所以實驗中涉及的相關用戶、密鑰、域名等信息都是在服務端設定好的,可以使用網站提供的虛擬機環境進行測試。
(這一種是LDAP Password驗證的方式,並且使用了圖形化的配置工具authconfig-gtk )
第一步
安裝必要的軟件包,共三個,分別是 SSSD、authconfig-gtk、krb5-workstation。另外,如果不是使用 Kerberos 認證,那么 krb5-workstation 可以不安裝。
- [root@server0 ~]# yum -y install sssd authconfig-gtk krb5-workstation
第二步
在終端輸入 authconfig-gtk,打開圖形化配置工具,輸入相關信息:


到此,就已經配置好一個以 LDAP 作為本地用戶認證方式了。
實驗環境中,用戶名為 ldapuser0,密碼為 password。
- [root@server0 ~]# id ldapuser0
- uid=1700(ldapuser0) gid=1700(ldapuser0) groups=1700(ldapuser0)
- [root@server0 ~]# getent passwd ldapuser0
- ldapuser0:*:1700:1700:LDAP Test User 0:/home/guests/ldapuser0:/bin/bash
- [root@server0 ~]# ssh ldapuser0@localhost
(下面這種是使用Kerberos驗證的方式,這次使用setup工具避免圖形化的操作)
第一步
安裝必要的軟件包
- [root@server0 ~]# yum -y install sssd krb5-workstation
第二步
在終端輸入setup,輸入相關信息:
選擇第一個 認證設置:
按空格勾選:使用kerberos認證方式
設置LDAP server、Base DN (這里的信息,題目會給出來的)
填寫kerberos 認證信息:
然后需要CA證書,此時千萬先不要點OK
按照題目要求在desktop的路徑下載CA證書,此時重新開一個tty去下載
地址題目已經給出,下載到/etc/openldap/cacerts
[root@desktop0 ~]# cd /etc/openldap/cacerts
[root@desktop0 cacerts]# wget http://classroom.example.com/pub/EXAMPLE-CA-CERT..(下載的過程省略了)..
[root@desktop0 cacerts]# ls
EXAMPLE-CA-CERT
[root@desktop0 cacerts]#
下載完成之后,再回來點擊OK
這樣就算是完成了
測試:
[root@desktop0 ~]# su – ldapuser1
su: warning: cannot change directory to /home/guests/ldapuser1: No such file or directory
mkdir: cannot create directory ‘/home/guests’: Permission denied
-bash-4.2$
顯示如上說明賬戶可以登錄,但沒找到用戶主目錄。這需要在本地配置autofs掛載路徑
[root@desktop0 ~]# ssh ldapuser1@desktop0.example.com
^[[DThe authenticity of host ‘desktop0.example.com (172.25.0.10)’ can’t be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘desktop0.example.com,172.25.0.10’ (ECDSA) to the list of known hosts.
ldapuser1@desktop0.example.com’s password:
Last login: Tue Aug 2 22:22:08 2016
Could not chdir to home directory /home/guests/ldapuser1: No such file or directory
mkdir: cannot create directory ‘/home/guests’: Permission denied
-bash-4.2$
實驗環境中,用戶名為 ldapuser0 ~ldapuser9 均可,密碼為 kerberos
接下來,使用autofs 自動連接
第一步
安裝必要的軟件包
- [root@desktop0 ~]# yum install autofs -y
第二步
設置開機啟動,並啟動autofs:
- [root@desktop0 ~]# systemctl enable autofs.service
[root@desktop0 ~]# systemctl start autofs.service
第三步
編輯配置文件:
- vim /etc/auto.master.d/my.autofs
/home/guests /etc/my.master
配置兩項,第一項為在desktop0上掛載的目錄,第二項為掛載點配置文件
(注: Autofs的配置文件可以是/etc/ auto.master.d下以.autofs結尾的文件)
(直接修改/etc/auto.master的方法可以看這里autofs自動掛載NFS共享目錄配置文檔)
- vim /etc/my.master
* classroom.example.com:/home/guests/&
第四步
重啟服務
- systemctl restart autofs.service
測試:
[root@desktop0 ~]# ssh ldapuser1@desktop0.example.com
ldapuser1@desktop0.example.com’s password:
Last login: Tue Aug 2 23:40:41 2016 from desktop0.example.com
[ldapuser1@desktop0 ~]$ pwd
/home/guests/ldapuser1
13. 建立用戶jack,指定uid為2000
- useradd -u 2000 jack
注意創建完成后,題目是否有要求設置密碼
14. 創建新的swap分區512M,需要寫入fstab自動開機掛接
做之前先看題目要求,用哪一塊磁盤創建? 創建幾個swap?等等
另外也free -h看一下,當前系統內存的情況
[root@desktop0 ~]# free -h
total used free shared buffers cached
Mem: 1.8G 814M 1.0G 16M 688K 466M
-/+ buffers/cache: 347M 1.5G
Swap: 0B 0B 0B
第一步
創建swap分區 (fdisk的用法就不在這里細說了)
[root@desktop0 ~]# fdisk /dev/vdb
Command (m for help): p
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x56a26ad2Device Boot Start End Blocks Id System
/dev/vdb1 2048 1050623 524288 82 Linux swap / Solaris
第二步
格式化,並啟用
- [root@desktop0 ~]# mkswap /dev/vdb1
- [root@desktop0 ~]# swapon /dev/vdb1
[root@desktop0 ~]# partprobe
[root@desktop0 ~]# ll /dev/vdb*
brw-rw—-. 1 root disk 253, 16 Aug 3 00:57 /dev/vdb
brw-rw—-. 1 root disk 253, 17 Aug 3 00:57 /dev/vdb1
[root@desktop0 ~]# mkswap /dev/vdb1
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=b39b279d-3b91-4c69-a6f6-f9cdd0de2645
[root@desktop0 ~]# swapon /dev/vdb1
[root@desktop0 ~]# free -h
total used free shared buffers cached
Mem: 1.8G 815M 1.0G 16M 692K 467M
-/+ buffers/cache: 347M 1.5G
Swap: 511M 0B 511M
第三步
編輯配置文件:
- vim /etc/fstab
/dev/vdb1 swap swap defaults 0 0
測試
reboot重啟驗證
另外看到一個帖子里面說道:
考 RHCE 紅帽認證的時候,不知道是官方故意安排或是什么原因,上午的 RHCSA 考試中有一題是創建新的 swap 分區,且無法通過新建分區的方法做題,這時就可以通過建立一個 swap 文件增加虛擬內存。
操作方法
第一步
新建一個 swap 文件,bs 是定義塊的大小,count 是定義塊的數量,下面新建一個大小為 4G 的文件。
- [root@wanghualang /]# dd if=/dev/zero of=/tmp/newswap bs=4k count=1024000
第二步
格式化剛才新建的 swap 文件。
- [root@wanghualang /]# mkswap /tmp/newswap
第三步
掛載
- [root@wanghualang /]# swapon /tmp/newswap
第四步
查看 swap 分區容量。
- [root@wanghualang /]# free -m
15. 查找屬於用戶alice的所有文件,並將其拷貝到/findfiles
考察find 命令 -exec的用法
- mkdir /findfiles
- find / -u alice -exec cp -avf {} /findfiles \;
16. 在/usr/share/dict/words中查找到所有包含字符串seismic 的行,
將找出的行按照原文的先后順序拷貝到/root/filelist文件中。/root/filelist文件不要包含空行
考察grep命令 和 重定向符的使用
- cat /usr/share/dict/words | grep “seismic” > /root/filelist
或者:
- grep “seismic” /usr/share/dict/words > /root/filelist
17. 將/etc目錄歸檔並壓縮到/root/backup.tar.bz2,使用bzip2壓縮。
考察tar 命令使用
- tar jcvf /root/backup.tar.bz2 /etc
18. 創建邏輯卷database,屬於卷組datastore,邏輯卷的大小為10個物理擴展單元,物理擴展單元(physical extent)
大小16M。使用ext4文件系統對新的邏輯卷進行格式化。自動掛載在/mnt/database 目錄下。
LVM算是RHCSA中比較麻煩,也比較難的題目了,這個只是要求創建LVM,但是考試中往往考查調整LVM(增大或減小)
第一步
創建底層支持LVM的分區,即創建分區並修改分區類型(fdisk 后記得partprobe)
創建PV
[root@desktop0 ~]# pvcreate /dev/vdb2
Physical volume “/dev/vdb2” successfully created
[root@desktop0 ~]# pvscan
PV /dev/vdb2 lvm2 [1.00 GiB]
Total: 1 [1.00 GiB] / in use: 0 [0 ] / in no VG: 1 [1.00 GiB]
第三步
創建VG
- [root@desktop0 ~]# vgcreate datastore /dev/vdb2 -s 16M (千萬別忘了指定PE的大小)
Volume group “datastore” successfully created - [root@desktop0 ~]# vgdisplay
第四步
創建LV
- [root@desktop0 ~]# lvcreate datastore -n database -l 10
Logical volume “database” created - [root@desktop0 ~]# lvdisplay
第五步
格式化LVM,並且開機自動掛載
- [root@desktop0 ~]# mkfs.ext4 /dev/datastore/database
- [root@desktop0 ~]# mkdir /mnt/database/
- [root@desktop0 ~]# vim /etc/fstab
/dev/datastore/database /mnt/database ext4 defaults 0 0
- [root@desktop0 ~]# mount -a
- [root@desktop0 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 10G 3.5G 6.6G 35% /
devtmpfs 906M 0 906M 0% /dev
tmpfs 921M 80K 921M 1% /dev/shm
tmpfs 921M 17M 904M 2% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/mapper/datastore-database 151M 1.6M 139M 2% /mnt/database
可以再重啟驗證
文章來源:
http://www.attacker2001.com/雲襲2001's blog
一個不努力的菜鳥








