Linux 基礎學習訓練教材 - CentOS 8.x

測驗練習二:期末考練習

就要期末考了,所以這個練習很重要!不要忽略實做的幫助!

最近更新時間: 2020/06/24

總共 14 堂課的基礎練習已經結束了!現在就來統一整理整理整個考試吧!前面七堂課都在打基礎,後面七堂課則是比較牽涉到管理員的工作。 所以期末考大部分還是著重在管理員的角度來思考喔!另外,因為檔案系統與救援很容易會造成系統的損毀,如果做錯就慘了! 因此,從這學期開始,考試分為兩個硬碟,一個是可以正常登入的系統,一個是需要救援的系統!那大家就繼續來研究研究囉!

期末考練習

  • 作業之一 (不提供學生答案,僅提供教師參考答案)

作業硬碟一般操作說明:

  • 開啟雲端虛擬機器前,請務必確認你開啟的硬碟是『practice1』,否則就會做錯題目
  • 若要使用圖形界面,請務必使用 student 身份登入,若需要切換身份,再啟用終端機處理。
  • 若有簡答題需要使用中文,請自行以第一堂課的動作自行處理輸入法安裝。
  • 每部虛擬機器均有獨特的網卡位址,請勿使用他人硬碟上傳,否則計分為 0 分。
  • 每位同學均有自己的 IP 尾數,請先向老師詢問您的 IP 尾數,才可以進行作業上傳。
  • 最終上傳作業結果,請務必使用 root 身份上傳。
  • 進入作業硬碟後,先用 root 身份執行 vbird_book_setup_ip , 執行流程請參考:vbird_book_setup_ip

作業當中,某些部份可能為簡答題~若為簡答題時,請將答案寫入 /home/student/ans.txt 當中,並寫好正確題號,方便老師訂正答案。 請注意,檔名寫錯將無法上傳!

  • 重要注意事項:
  • 若發生底下的問題,則此次練習為 0 分
    • root 設定密碼錯誤
    • IP 設定錯誤
    • 預設出現圖形界面 (如果開機不是純文字界面,也是 0 分)
    • 若無法傳送成績,此次考試亦為 0 分
  • 某些題目是具有連續性的,因此請看懂題目後再進行。
  • 開始考試的練習 -- VM 1: 系統設定與操作部份

這個系統預設的 root 密碼為 myCentOS8,預設的 student 密碼為 mystdgo,是可以直接登入的,無須救援 root 密碼。 這個系統需要的是一些正確的設定,以符合系統的運作!

  1. 不是題目:請使用 vbird_book_setup_ip 設定好你的學號資料。
  2. 系統初始化設定
    1. 我需要每次開機都可以預設的進入純文字界面而非現行的圖形界面,可以節省許多不必要的資源浪費。
      • 在系統自己開機後,預設會跑進純文字界面,沒有圖形界面的意思。
      • 你在操作時,依舊可以『暫時』切換到圖形界面,沒有特別要求你一定要在文字界面答題。
    2. 請設定好這部主機的網路參數成為如下狀態 (全對才給分):
      • 刪除原有的網路連線名稱,建立名為『 mynetwork 』的連線名稱,且使用到可對外的乙太網路界面。
      • 需要開機就自動啟動這個連線
      • 網路參數的設定方式為手動設定
      • 網際網路位址 IP address 為: 192.168.251.XXX (XXX 為上課時,老師給予的號碼)
      • 子網路遮罩 netmask 為: 255.255.255.0
      • 通訊閘 Gateway 為: 192.168.251.254
      • 領域名稱伺服器 DNS server 位址為: 172.16.200.254 以及 120.114.100.1 這兩個
      • 主機名稱:請設定為 wwwXXX.book.vbird (其中 XXX 為上課時,老師給予的號碼)
    3. 針對 YUM 的軟體倉儲設定,你有底下的兩組軟體倉儲位址,請設定好所需要的環境 (全對才給分):
      • http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/AppStream/x86_64/os/
      • http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/BaseOS/x86_64/os/
    4. 時區與時間及網路校時功能設計:
      • 你系統的時間好像怪怪的,時區與時間好像都錯亂了!請改回台北的時區與時間。
      • 請使用網路校時 (chronyd) 的方式,使用貴校 ntp.ksu.edu.tw 作為伺服器,主動更新你的系統時間。 且系統啟動之後,會持續網路校時以取得最正確的時間。(若貴校並無 NTP 伺服器,則以 time.stdtime.gov.tw 作為來源)
    5. 系統的自動更新機制:
      1. 請至少升級核心 (kernel) 到最新版本,且升級完畢後,需要重新開機為宜
      2. 這部主機需要作為未來開發軟體之用,因此需要安裝一個『 RPM 開發工具 』的軟體群組,請安裝他。
      3. 請設定每天凌晨 3 點自動背景進行全系統更新。
  3. 帳號與權限控管方面的問題,包括新建帳號、帳號相關權限設定等
    1. 管理員的一般帳號設定:
      • 請讓 student 可以順利使用自己的密碼操作 sudo 指令
    2. 帳號鎖定功能:
      • 有個名為 alex 的帳號,他的密碼為 mygodhehe ,這個帳號有點怪異,因此身為管理員的你,得要將該帳號暫時鎖定。
      • 意思是說,這個帳號的所有資源都不變,但是該帳號無法順利使用密碼登入的意思(密碼鎖定)
    3. 特殊系統帳號建置:建立一個名為 mysys1 的系統帳號,且這個系統帳號
      • 不需要家目錄
      • 不具備可互動的 shell
      • 不需要密碼
    4. 預設帳號的權限屬性設定:
      • 建立新用戶時,新用戶的家目錄應該都會出現一個名為 newhtml 的子目錄存在
      • 新帳號登入時,預設將會『 rm='rm -i' 』『 cp='cp -i' 』『 mv='mv -i' 』這三個命令別名存在。
    5. 特殊帳號管理的需求:
      • 讓 /home 這個目錄支援使用者與群組的 Quota 磁碟配額功能
      • 增加一個名為 examgroup 的群組
    6. 特殊帳號建立的需求:請寫一隻名為 /root/users/addusers.sh 的腳本,這個腳本將用來處理特殊帳號的建置。 你應該使用 for…do…done 迴圈的方式來建立這隻腳本,而 for 迴圈內的程式碼,請依序使用如下的方式來建置妥當
      1. 建立帳號時的相關參數設計:
        • 帳號名稱為: examuser11 ~ examuser30 共 20 個帳號
        • 建立帳號時,每個帳號都要加入一個名為 examgroup 的次要群組支援
        • 每個帳號的全名說明就是該帳號的名稱
      2. 每個帳號的密碼均為 myPassWord
      3. 並且每個帳號首次登入系統時,都會被強迫要求更改密碼 (chage ??)
      4. 每個帳號在 /home 的 Quota 為 soft --> 120MB, hard --> 150MB
      5. 修改每位帳號家目錄 (例如 examuser11 家目錄在 /home/examuser11/ ) 的權限成為 drwx--x--x 的模樣
      6. 腳本建置完畢後,請務必執行一次,以確定帳號可以順利被建立!
    7. 群組共用目錄的功能:請建立一個名為 /data/myexam 的目錄,這個目錄的權限設定是這樣的:
      1. 關於 examgroup 群組內的用戶權限:
        • 該目錄可以讓 examgroup 的用戶具有完整的權限
        • 而其他人不具備任何權限
        • 在該目錄底下新建的資料(不論檔案還是目錄),新資料的擁有群組都會是 examgroup
      2. 關於 examuser30 與 student 這兩個帳號的特定要求:
        • 因為 examuser30 帳號被盜,因此 examuser30 針對 /data/myexam 設定為不具備任何權限
        • 因為 student 是管理員的一般帳號,該帳號也需要查詢 /data/myexam 目錄下的資訊。
          • 請讓 student 可以讀、進入該目錄,但不可以寫入該目錄。
          • 未來在此目錄底下新建的任何資料,預設 student 都具有讀與進入目錄的權限(沒有寫入的權限喔!)。
  4. 系統基本操作,包括系統備份、自動化腳本、時間自動更新等機制
    1. 尋找特殊權限的檔名資料:
      • 找出在/usr/bin, /usr/sbin 目錄下,具有 s 或 t 等特殊權限的檔名 (SUID/SGID/SBIT)
      • 將這些檔名連同權限,以類似 ll 輸出的資訊,將訊息輸出到 /data/findperm.txt 檔案中
    2. 找尋 IP 參數輸出:
      • 使用『 ip addr show 』這個指令,將輸出訊息中,含有 inet 關鍵字的,但不能含有 inet6 關鍵字,一整列輸出
      • 將上述的結果轉輸出到 /data/mynetwork.txt 檔案中。
    3. 系統備份腳本製作:由於系統上面有非常多的重要資料必須要進行備份,因此我們想要使用一支 script 來進行備份的動作,且將該 script 定時執行:
      1. 請撰寫一隻名為 /root/backup_system.sh 的腳本,來進行備份的工作
      2. 需要備份的目錄有:/etc, /home, /var/spool/mail/, /var/spool/cron/, /var/spool/at/, /var/lib/,腳本的內容為:
        • 第一行一定要宣告 shell 喔!
        • 自動判斷 /backups 目錄是否存在,若不存在則 mkdir 建立她,若存在則不進行任何動作
        • 設計一個名為 mysource 的變數,變數內容以空格隔開所需要備份的目錄
        • 設計一個名為 mytarget 的變數,該變數為 tar 所建立的檔名,檔名命名規則 /backups/mysys_20xx_xx_xx.tar.gz , 其中 20xx_xx_xx 為西元年、月、日的數字,該數字依據你備份當天的日期由 date 自行取得。
        • 開始利用 tar 來備份
      3. 請注意,撰寫完畢之後,一定要立刻執行一次該腳本!確認實際有建立 /backups 以及相關的備份資料喔!
    4. 定期備份功能:排定上述的備份指令在每個星期 6 的凌晨 2 點進行這個備份的動作,且這個script在執行的時候:
      • 備份指令執行的過程請使用資料流重導向將過程完整的儲存在 /backups/backup.log 這個檔案中(包括正確與錯誤資訊)
      • 使用 NI值 10 來執行此指令。
    5. 我的 /usr/sbin/setquota 這個檔案不小心刪除了,該如何救回來?(可以使用 rpm 去追蹤是哪個軟體提供的檔案後,移除再安裝該軟體即可完成此題目。)
    6. 服務的管理部份,以 httpd 為例:
      • 讓你的 Linux 成為 http 以及 https 支援兩者的網頁伺服器
      • 每次開機都會主動的喚醒這個伺服器功能
      • Internet 應該要能夠連線到你的 http 以及 https 埠口服務
      • 當輸入 http://localhost 時,可以看到的是你的 (1)姓名與 (2)學號
      • 注意:上課提到的服務建置五個步驟!
  5. 腳本建立與系統管理
    1. 特殊原因,例如電力固定維護的關機情境問題:
      • 你的系統將在 7 月的 20 號 08:00 進行關機的歲修工作,請以『單次』工作排程來設計關機的動作 (poweroff)
    2. 系統開機的通知訊息:
      • 系統開機之後,會自動寄出一封 email 給 root,說明系統開機了。
      • 指令可以是『 echo "reboot new" | mail -s 'reboot message' root 』
      • 請注意,這個動作必須是系統『自動於開機完成後就動作』,而不需要使用者或管理員登入喔!(hint: rc.local)
    3. 為了方便大家使用 ps 外帶的參數來查詢系統的程序,因此管理員建立一隻名為 /usr/local/bin/myprocess 的腳本讓大家方便使用,腳本內容主要為:
      • 第一行一定要宣告 shell 為 bash 才行;
      • 主要僅執行『 /bin/ps -Ao pid,user,cpu,tty,args 』
      • 這隻腳本必須要讓所有人都可以執行才行!
    4. 寫一隻名為 /usr/local/bin/myans.sh 的腳本,這隻腳本的執行結果會這樣:
      • 腳本內第一行一定要宣告 shell 為 bash
      • 當執行 myans.sh true 時,螢幕會輸出『 Answer is true 』,且訊息為預設的 Standard output
      • 當執行 myans.sh false 時,螢幕會輸出『 Answer is false 』,且訊息輸出到 starndard error output
      • 當外帶參數不是 true 也不是 false 時,螢幕會輸出『 Usage: myans.sh true|false 』
      • 這隻腳本必須要讓所有人都可以執行才行!
  6. 基礎檔案管理與檔案系統維護:
    1. 打包檔案的格式錯誤問題:
      • 你的系統中有個檔名 /root/mybackup 的檔案,這個檔案原本是備份系統的資料,但副檔名不小心寫錯了!
      • 請將這個檔案修訂成為比較正確的副檔名 (例如 /root/mybackup.txt 之類的模樣)
      • 並且將該檔案在 /srv/testing/ 目錄中解開這個檔案的內容。
    2. LVM 彈性容量變化的效果:
      • 目前的系統中, /home 應該使用的是 LVM 的維護模式。請找出 /home 所在的 VG 剩餘容量
      • 將 VG 所有剩餘容量通通提供給 /home 使用,因此整個 /home 的容量將會放大很多。
      • 在目前的系統中,掛載在 /home 的LVM格式資料,請將它的容量變成
      • 且這個目錄內的資料並不會消失(無須重新格式化的意思)。
  7. 完成上述所有的題目後,請重新開機,並請在開機後 10 分鐘內執行上傳腳本,否則系統不允許你上傳喔!

    作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。 正常執行完畢的結果應會出現【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字樣。若需要查閱自己上傳資料的時間, 請在作業系統上面使用瀏覽器查詢: http://192.168.251.254 檢查相對應的課程檔案。 相關流程請參考: vbird_book_check_unit

  • 開始考試的練習 -- VM 2: 系統救援與檔案系統部份
  1. 不是題目:
    • 這個系統容量比較小,而且預設在文字界面
    • 這個系統目前已經沒有圖形界面,所以你無法進入圖形界面。
    • 若你想要使用圖形界面操作系統,可能需要安裝 yum groupinstall GNOME 才行。
    • 同樣的,預設界面一定要是純文字界面才可以!
  2. 這部主機真的怪怪的,之前的管理員似乎在這部主機上面進行一些測試,追問之下有一些可能發生的原因,問題還不只一個。 請依據底下可能發生原因的問題予以克服,最終讓系統可以直接以 root 登入! (hint: 千萬不要忘記 .autorelabel 的動作!)
    1. 系統救援 - 1 :核心相關資料錯誤造成的問題
      • 原因:因為要測試核心開機功能,結果不小心將 initramfs 檔案刪除掉了,所以應該是無法順利開機。
      • 建議救援方式:使用原版光碟處理,請進入系統救援的模式,並依據系統既有的核心版本,將 initramfs 重建
      • 注意:(1)重建時,應考慮 grub2 的原本設定檔 (可能會在哪裡?),以找到正確的檔名,方可順利成功開機喔。 (2)你可以使用任何一個 CentOS 8.x 的光碟做救援,但是需要注意不同的核心版本的問題!
    2. 系統救援 - 2 :管理員手滑造成的 root 屬性問題
      • 原因:因為幫用戶設定屬性,結果不小心『可能』修改到 root 這個帳號的相關屬性資料。
      • 救援恢復的要求: (1)root 密碼恢復到 myCentOS8;(2)root 登入時可順利取得 bash shell 。
    3. 系統救援 - 3 :LVM 隨便刪除造成的錯誤
      • 原因:在發生此錯誤之前,似乎曾經將系統的 LVM swap 刪除,是否如此造成系統錯誤還不得而之。
      • 建議救援方式:不要使用光碟,使用核心支援的維護模式,查看一下開機選單的內容是否正確。
      • 注意:在順利登入系統之後,你或許需要 (1)重建 grub 選單以及 (2)修改 /etc/fstab 檔案,以處理 swap 產生的問題
      • 注意:刪除 swap 為正常的行為,所以,請不要重建 lvm 的 swap 裝置!從選單去處理!
    4. 不是題目:在使用 root 正確登入系統之後,請使用 vbird_book_setup_ip 設定好你的學號與網路。
  3. 系統初始化功能:
    1. 針對 YUM 的軟體倉儲設定,你有底下的兩組軟體倉儲位址,請設定好所需要的環境 (全對才給分):
      • http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/AppStream/x86_64/os/
      • http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/BaseOS/x86_64/os/
    2. 系統升級行為
      • 只針對 kernel 升級即可
      • 升級完畢請立刻重新開機,且使用新核心
    3. 關於開機選單調整
      1. timeout時間設定為 15 秒,
      2. 預設所有的核心參數都會加入 noapic 及 noacpi 兩個參數
      3. 開機選單多一個回到MBR的設定,選單名稱內亦須包含『 MBR 』字樣,且選單位於最後一個位置
      4. 開機選單在最後多一項可以進入圖形界面模式,這個圖形界面請使用原有的核心版本 (不是剛剛升級的核心版本), 且title必須含有『 mygraphical 』的字樣才行!
  4. 檔案系統方面的處理,包含分割(注意primary, extended, logical的限制)、格式化、掛載等
    1. 軟體磁碟陣列管理:目前的系統有個出現磁碟出問題而快要損毀 (degrade) 的軟體磁碟陣列,找出並修復好該系統。
      • 該磁碟似乎已經被拔除一個 partition
      • 找出系統中具有的跟 RAID 內的 partition 容量相同,且沒有被使用的 partition,那就是這個 RAID 缺乏的磁碟槽 (假設已經被修理好了)
      • 請將該磁碟槽加入原本的系統中,以救援這個磁碟陣列 (讓他變成 clean 的狀態,改變 degraded 的困擾)
    2. 記憶體置換容量的處理:
      • 目前這個系統裡面似乎所有的 swap 通通被刪除了!不過這樣實在不太好。
      • 建立大型檔案,檔名為 /myswap.img,容量大概是 1G 即可。
      • 將上述檔案格式化成為 swap
      • 每次開機這個 swap 都會主動被系統所使用。
    3. LVM 的建立與 VDO 的應用
      • 將目前這個系統當中的所有剩餘容量建立成為單一分割槽,並且將 system ID 設定為 LVM
      • 利用上面這個分割槽,建立一個名為 thevg 的 VG ,且 PE 容量為 8M
      • 將 thevg 的所有容量通通給予名為 thelv 的 lv,所以最終會出現 /dev/thevg/thelv 的裝置。
      • 將 /dev/thevg/thelv 加入到 VDO 的支援,建立名為如下的 VDO 裝置
        • VDO 名稱為 thevdo
        • VDO 虛擬容量為 20G
        • 裝置使用 /dev/thevg/thelv
      • 將 VDO 裝置格式化成為 XFS 檔案系統
      • 此裝置開機後會立刻掛載到 /data/vmdata 目錄下
    4. LVM 與 stratisd 的應用
      • 將 centos 這個 VG 的剩餘容量,給予一個名為 thepool 的 LVM 裝置,最終會有 /dev/centos/thepool 裝置存在。
      • 將 thepool 加入到名為 lvmpool 的儲存池 (thin pool) 當中
      • 建立 thefs 檔案系統,並且開機會掛載到 /data/mypool 目錄下。
      • 上述掛載最好使用 UUID 來處理!
  5. 系統效能處理:
    1. 請改用『 throughput-performance 』來動態調整系統效能
    2. 調整核心參數,讓每次開機都會修改成為底下這樣:
      • /proc/sys/vm/dirty_ratio 改成 40
      • /proc/sys/vm/dirty_background_ratio 改成 5
      • /proc/sys/vm/swappiness 改成 10
  6. 完成上述所有的題目後,請重新開機,並請在開機後 10 分鐘內執行上傳腳本,否則系統不允許你上傳喔!

    作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。 正常執行完畢的結果應會出現【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字樣。若需要查閱自己上傳資料的時間, 請在作業系統上面使用瀏覽器查詢: http://192.168.251.254 檢查相對應的課程檔案。 相關流程請參考: vbird_book_check_unit

修改歷史:
  • 2017/03/23:是期中考模擬題!將前面的題目全部整合在一起~說麻煩也不麻煩~說難也有點難!大家加油吧!
  • 2020/06/24:將 VM 拆開成為兩個,第一個 VM 是做錯比較不容易當機的,第二個 VM 則是做錯會出問題的!分開來做比較好!
2020/06/24 以來統計人數
計數器
伺服器篇文件
各版本彙整說明
CentOS 6.x