RHCSA 2.0 === [ToC] # 模擬考試 v2.0: 1h - 模擬考試中所有 X 均為當前主機名數字 # 第一題: 重置 root 密碼,並按要求設置網路和主機名稱,IP設置方法為靜態 - 主機名稱: serverX.example.com - IP 位址: 172.25.X.11 - 網路遮罩: 255.255.255.0 - Gateway: 172.25.X.254 - DNS: 172.25.254.254 ### 解題 1. 重置 root 密碼 1. linux16 ... `rd.break console=tty0` 2. switch_root:/# `mound -o remount,rw /sysroot` 3. switch_root:/# `chroot /sysroot` 4. sh-4.2# `passwd` 5. sh-4.2# `touch /.autorelabel` 6. sh-4.2# `exit` 7. switch_root:/# `mount -o remount,ro /sysroot` 8. switch_root:/# `exit` 2. 設定主機名稱 - `hostnamectl set-hostname server6.example.com` - `hostname` 3. 設定 eth0 的 IPv4 IP - 直接用 GUI 設定 - CLI 設定 1. 查看網卡名稱 - `nmcli connection show [--active]` - eth0(Device) => "System eth0"(Name) 2. 修改網路配置 - `nmcli connection modify "System eth0" ipv4.method manual ipv4.addresses 172.25.6.11/24\ 172.25.6.254 ipv4.dns 172.25.254.254` 3. 重啟網路 - ~~`systemctl restart NetworkManager.service`~~ - `systemctl restart network.service` # 第二題: 將 SELinux 設為 enforcing 模式 1. 用 Vim 打開 SELinux 的設定檔 - `vim /etc/selinux/config` 3. 將 SELINUX 的值改成 ==enforcing== - `SELINUX=enforcing` # 第三題: 建立 Yum 軟體倉庫,該 Yum 軟體倉庫將作為默認倉庫 - YUM REPO: http://content.example.com/rhel7.0/x86_64/dvd - 指令設定 1. 用 `yum-config-manager` 新增 repo` - `yum-config-manager --add-repo=http://content.example.com/rhel7.0/x86_64/dvd` 2. 用 `rmp` 匯入 GPG Key => 用來確認 Package 沒被修改過 - `rpm --import http://content.example.com/rhel7.0/x86_64/dvd/RPM-GPG-KEY-redhat-release` - 使用 `yum` repo 設定檔設定 1. 新增 `yum` repo 的檔案 - `vim /etc/yum.repos.d/default.repo` 1. `[default]` => Repo id,可自取 2. `name = DVD` => Repo name,可自取 3. `baseurl = http://content.example.com/rhel7.0/x86_64/dvd` => Repo 的網址 4. `enabled = 1` => 啟用 Repo 5. `gpgcheck = 0` => 不要檢查 GPG Key # 第四題: 調整邏輯卷 loans 及其上文件系統大小為 300M (310~330M 是可接受的) ### 解題 1. 先調整 LVM 的 Logical Volume - 壓縮 - `lvreduce /dev/finance/loans --size 300M` - `lvreduce /dev/finance/loans -L 300M` - 擴展 - `lvextend /dev/finance/loans --size 300M` - `lvextend /dev/finance/loans -L 300M` - 通用 `lvresize /dev/finance/loans --size 300M` 2. 擴充檔案系統(File System) - 檢查 loans 的檔案系統: `df -T` - xfs => 只能擴充容量 - `mkfs.xfs <partition>`: 格式化成 xfs - ex. `mkfs.xfs /dev/vdb1`: 將 /dev/vdb1 格式化成 xfs - `xfs_growfs <mount point>`: 擴充 xfs 檔案系統的空間 - ex. `xfs_growfs /mnt/storage` - ext4 => 可擴充也可壓縮容量 - `mkfs.ext4 <partition>`: 格式化成 ext4 - `resize2fs <partition>`: 擴充 ext2/ext3/ext4 檔案系統的空間 # 第五題: 按要求建立用戶組及多個用戶,設置用戶的候選組,設置用戶的預設 shell ### 解題 1. 建立群組 `adminuser` - `groupadd adminuser` 3. 建立用戶 `natasha`, `harry` 屬於該群組 (該群組他們的第二個群組) - `useradd --groups adminuser natasha` - or `useradd -G adminuser natasha` - `useradd --groups adminuser harry` - or `useradd -G adminuser harry` 5. 建立用戶 `sarah` 不屬於 `adminuser`,沒有交互的 shell - `useradd --shell /sbin/nologin sarah` - or `useradd -s /sbin/nologin sarah` 7. 他們的密碼都是 `tianyun` - 個別設定 - `echo tianyun | passwd --stdin natasha` - `echo tianyun | passwd --stdin harry` - `echo tianyun | passwd --stdin sarah` - 迴圈設定 ```bash for user in natasha harry sarah; do echo tianyun | passwd --stdin $user done ``` # 第六題: 按要求設置文件及目錄全縣,會用到文件 `acl` 權限 - `chmod`: 設定檔案權限 - ex. `chmod 744 file`: 設定 file 的檔案權限 - 7: 使用者權限為 rwx => 可讀、可寫、可執行 - 4: 群組權限為 r-- => 只能讀取檔案內容 - 4: 其他人的權限為 r-- - ex. `chmod u=rwx,g+x,o-w file`: 設定 file 的檔案權限 - u=rwx: 使用者權限為 rwx - g+x: 增加群組執行的權限 - o-w: 移除其他人寫入的權限 - ex. `chmod a-x file`: 設定 file 權限 - a-x: 移除使用者、群組、其他人的執行權限 - `chown`: 設定檔案使用者 - ex. `chown aaa file`: 設定 file 的使用者為 aaa - ex. `chown bbb:ccc file`: 設定 file 的使用者為 bbb,群組為 ccc - `chgrp`: 設定檔案群組 - ex. `chgrp ddd file` 設定 file 的群組為 ddd - ACL: Access Control List - `getfacl`: 取得檔案的 ACL - `getfacl file`: 顯示 file 的 ACL 資訊 - `setfacl`: 設定檔案的 ACL - ex. `setfacl --modify user:aaa:rwx file` - 設定單一使用者 aaa 對 file 的權限為可讀、可寫、可執行 ### 解題 1. 拷貝 `/etc/fstab` 到 `/var/tmp/fstab` - `cp /etc/fstab /var/tmp/fstab` 3. 屬主和屬組為 `root` - `chown root:root /var/tmp/fstab` 5. 任何人都不能執行 - `chmod a-x /var/tmp/fstab` 7. `natasha` 能讀寫 - `setfacl --modify user:natasha:rw /var/tmp/fstab` - or `setfacl -m u:natasha:rw /var/tmp/fstab` 9. `harry` 沒有任何權限 - `setfacl -m u:harry:0 /var/tmp/fstab` 11. 其他和將來的用戶能夠讀 - `chmod o+r /var/tmp/fstab` # 第七題: 設置用戶的計畫任務 cron - `natasha` 每天 14:20 時執行命令: `/bin/echo hello` 1. `crontab -u natasha -e` 2. `20 14 * * * /bin/echo hello` # 第八題: 設置目錄權限 ### 解題 1. 創建共享目錄 `/home/admins` - `mkdir /home/admins` 3. 屬組為 `adminuser` - 解法一: `chgrp adminuser /home/admins` - 解法二: `chown :adminuser /home/admins` 5. `adminuser` 組成員對目錄有**讀**、**寫**和**執行**的權限 - `chmod g+rwx /home/admins` 7. 其他所有用戶沒有任何權限 (root 除外) - `chmod o-rwx /home/admins` 9. 在 `/home/admins` 目錄中創建的文件,會自動繼承 adminuser 組 - `chmod 2770 /home/admins` - `chmod 770 /home/admins` - `chmod g+s /home/admins` # 第九題: 按指定要求安裝升級內核,保證 grub2 啟動時為默認項目 - YUM REPO: http://content.example.com/rhel7.0/x86_64/errata ### 解題 - 指令解1 - `rpm -ivh <kernel.rpm>` - kernel.rpm: http://content.example.com/rhel7.0/x86_64/errata/ 下面的 kernel.xxx.rpm - 指令解2 1. `yum-config-manager --add-repo=http://content.example.com/rhel7.0/x86_64/errata` 2. `rpm --import http://content.example.com/rhel7.0/x86_64/dvd/RPM-GPG-KEY-redhat-release` 3. `yum install kernel` - 使用 yum 設定檔 - `vim /etc/yum.repos.d/kernel.repo` 1. `[kernel]` => Repo id,可自取 2. `name = Kernel Repo` => Repo name,可自取 3. `baseurl = http://content.example.com/rhel7.0/x86_64/errata` 4. `enabled = 1` 5. `gpgcheck = 0` # 第十題: 使用 LDAP 作為本地用戶認證方式 - LDAP Server: `classroom.example.com` - LDAP Base DN: `dc=example,dc=com` - Root CA: `http://classroom.example.com/pub/example-ca.crt` ### 解題 1. `yum install -y authconfig-gtk sssd` - `authconfig-gtk`: 圖形介面(GUI)設定 LDAP,使用指令則不須安裝 - `sssd`: authconfig 需要透過 sssd 來認證 LDAP 3. GUI - Application -> Sundry -> Authentication - User Account Configuration - User Account Database: `LDAP` - LDAP Search Base DN: `dc=example,dc=com` - LDAP Server: `ldap://classroom.example.com` - Use TLS to encrypt connections - `http://classroom.example.com/pub/example-ca.crt` - Authentication Configuration - Authentication Method: `LDAP password` - CLI: `authconfig --enableldap --enableldapauth --ldapserver=ldap://classroom.example.com --ldapbasedn="dc=example,dc=com" --enableldaptls --ldaploadcacert=http://classroom.example.com/pub/example-ca.crt --update` - tips: `authconfig --enableldap | grep ldap` # 第十一題: 設置 NTP 服務,同步指定服務器時間 - NTP Server: classroom.example.com ### 解題 - 安裝 chrony NTP Server/Client: `yum install chrony` 1. `vim /etc/chrony.conf` 1. 新增 `server classroom.example.com iburst` - iburst: 減少 chronyd 啟動時第一次跟 NTP server 同步的時間 2. 刪除其他 server 伺服器 - vim 在一般(指令)模式下按 dd 刪除一整行 2. `systemctl restart chronyd`: 重新啟動,讓 chronyd 讀取 /etc/chronyd.conf 3. `systemctl enable chronyd`: 開機時啟動 chronyd - 同步確認 - `chronyc sources`: NTP server 資訊 - `chronyc tracking`: 系統時間資訊 # 第十二題: 配置和 LDAP 用戶認證配合的 aufofs 自動目錄掛接 - autofs - `/etc/auto.master`: `<mount-point> <map-type>` - `<mount-point>`: 本地掛載位置 - `<map-type>`: 掛載的類型,或設定檔 - `</local/directory> -<options> <server>:</remote/export>` - options: `man nfs` => mount options 1. `yum install autofs` => 安裝 autofs 3. `vim /etc/auto.master.d/home.autofs` - `/home/guests /etc/auto.home` 3. `vim /etc/auto.home` - `ldapuser6 -rw,vers=3 classroom.example.com:/home/guests/ldapuser6` - or `* -rw,vers=3 classroom.example.com:/home/guests/&` - or `* -fstype=auto classroom.example.com:/home/guests/&` 4. `systemctl start autofs` => 啟動 autofs 5. `systemctl enable autofs` => 設定開機時啟動 autofs # 第十三題: 建立用戶 jack,指定 uid 為 2000 - `useradd --uid 2000 jack` - `--uid 2000`: user id 2000 - or `useradd -u 2000 jack` - `-u`: `--uid` 的縮寫 # 第十四題: 創建新的 swap 分區 512M,需要寫入 fstab 自動開機掛接 - Swap: 當記憶體不足時,將閒置中程式的記憶體移到暫時的儲存區,空出記憶體空間 1. `fdisk /dev/vdb`: 修改 `/dev/vdb` 的分割表 1. `n`: 新增磁碟分割區 2. `e`: extended => 分割類型:延伸分割區 3. Enter: 使用預設分割代號(default 1) 4. Enter: 使用預設起始位置 5. Enter: 預設使用全部空間 6. `p`: 顯示分割表 => 確認分割狀況 7. `n`: 新增磁碟分割區 8. `l`: logical => 分割類型:邏輯分割區 9. Enter: 預設起始位置 10. `+512M`: 使用 512M 的空間 11. `t`: 改變分割類型 12. `5`: 選擇分割代號5 13. `82`: 分割類型 Swap 代號為 82,不知道可輸入 L 查詢 14. `p`: 顯示分割表 15. `w`: 寫入分割表 2. `partprobe`: 通知作業系統重新掃描分割表 4. `mkswap /dev/vdb5`: 格式化 /dev/vdb5 成 Swap 5. `swapon -s`: 查看 swap,應該沒東西(目前還沒掛載 6. `swapon /dev/vdb5`: 掛載 /dev/vdb5 到 swap 7. `swapon -s`: 查看 swap,掛載成功會顯示 /dev/vdb5 8. `vim /etc/fstab`: 設定開機自動掛載 - `/dev/vdb5 swap swap defaults 0 0` - or `/dev/vdb5 none swap sw 0 0` 9. `reboot`: 重新開機,查看自動掛載是否成功 10. `swapon -s`: 查看 swap,有 /dev/vdb5 代表自動掛載成功 # 第十五題: 查找屬於用戶 ~~alice~~ natasha 的所有文件,並將其拷貝到 /findfiles - `find / -user natasha -type f -exec cp -p {} /findfils/ \;` - `/`: 搜尋根目錄(/)下的所有檔案 - `-user natasha`: 檔案的使用者為 natasha - `-type f`: 檔案的類型為**一般檔案**(避免搜尋到資料夾 - `-exec ... \;`: 每個結果都會跑一次指令 `...`,`\;` 為告訴 find 指令的結尾 - `cp -p {} /findfiles/` - 複製 `{}` 到 `/findfiles` - `-p`: 若資料夾 /findfiles 不存在,則自動建立 /findfiles 資料夾 - 自動建立 parents 資料夾 - `{}`: `find` 會把找到的檔案取代 `{}` # 第十六題: 在 `/usr/share/dict/words` 中查找到所有包含字符串 seismic 的行,將找出的行按照原文的先後順序拷貝到 `/root/filelist` 文件中。`/root/filelist` 文件不要包含空行 - `grep seismic /usr/share/dict/words > /root/filelist` - `grep seismic /usr/share/dict/words` - 尋找檔案 `/usr/share/dict/words` 中有 seismic 的行 - `> /root/filelist`: 將結果儲存到 `/root/filelist` # 第十七題: 將 /etc 目錄歸檔並壓縮到 /root/backup.tar.bz2,使用 bzip2 壓縮 - `tar cjvf /root/backup.tar.bz2 /etc` - `c`: 建立壓縮檔 - `x`: 解壓縮 - `j`: 使用 bzip2 壓縮演算法 - `v`: 顯示過程(verbose) - `f /root/backup.tar.bz2`: 將壓縮的結果儲存到 `/root/backup.tar.bz2` - `/etc`: 來源為 `/etc` # 第十八題: 創建邏輯卷 database,屬於卷組 datastore,邏輯卷的大小為 10 個物理擴展單元,物理擴展單元 (physical extent) 大小為 16M。使用 ext4 文件系統對新的邏輯卷進行格式化,自動掛載在 /mnt/database 目錄下。 ### 解題 1. 準備大於 160M 的硬碟空間給 LVM 1. `fdisk /dev/vdb`: 操作 `/dev/vdb` 的分割表 1. `n`: 建立新的分割區 2. `l`: 分割區類型: logical 3. Enter: 使用預設起始位置 4. `+200M`: 使用 200M 的空間,只要比 10 x 16M => 160M 大就可以了 5. `t`: 改變分割類型 6. `6`: 選取分割區6, 7. `8e`: 分割區類型為 LVM,可用 L 查詢 8. `p`: 顯示分割表 => 確認分割狀況 9. `w`: 寫入分割表 2. `partprobe`: 告訴作業系統重新掃描磁碟分割表 2. LVM 1. `pvcreate /dev/vdb6`: 設定 `/dev/vdb6` 給 LVM 使用 2. `vgcreate -s 16M datastore /dev/vdb6` - 建立 Volume Group (容量群組) - `-s 16M`: 物理擴展單元為 16M - `datastore`: Volume Group 的名稱為 `datastore` 3. `lvcreate -l 10 -n database datastore` - 從 Volume Group 建立 Logical Volume (邏輯容量) - `-l 10`: Logical Volume 的容量為 10 個物理擴展單元 - `-n database`: Logical Volume 的名稱為 `database` - `datastore`: 將 database(Logical Volume) 建立在 datastore(Volume Group) 裡 - ~~or `lvcreate -L 160M -n database datastore`~~ 3. 格式化成 ext4 - `mkfs -t ext4 /dev/datastore/database` 4. 自動掛載到 `/mnt/database` 1. `mkdir /mnt/database` - 手動掛載: `mount /dev/datastore/database /mnt/database` - `df -Th` 2. `vim /etc/fstab` - `/dev/datastore/database /mnt/database ext4 defaults 0 0` ## Reference - https://liyang85.github.io/rhcsa-exam-questions.html - https://liyang85.github.io/rhce-exam-questions.html - https://en.wikipedia.org/wiki/Security-Enhanced_Linux - https://www.tecmint.com/configure-network-connections-using-nmcli-tool-in-linux/ - https://blog.csdn.net/yangxjsun/article/details/79311884 - http://dywang.csie.cyut.edu.tw/dywang/download/pdf/rhcsa7.pdf - https://blog.xuite.net/oracle_dba/wretch/212732035-Linux+yum+local+%E5%AE%89%E8%A3%9D - https://blog.51cto.com/xuding/1767129 - https://codingbee.net/rhcsa/rhcsa-automounting-remotely-shared-folders-nfs-and-cifs - https://codingbee.net/rhcsa/rhcsa-automounting-using-systemd-and-autofs
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up