期末考練習
作業硬碟一般操作說明:
- 開啟雲端虛擬機器前,請務必確認你開啟的硬碟是『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 密碼。
這個系統需要的是一些正確的設定,以符合系統的運作!
- 不是題目:請使用 vbird_book_setup_ip 設定好你的學號資料。
- 系統初始化設定
- 我需要每次開機都可以預設的進入純文字界面而非現行的圖形界面,可以節省許多不必要的資源浪費。
- 在系統自己開機後,預設會跑進純文字界面,沒有圖形界面的意思。
- 你在操作時,依舊可以『暫時』切換到圖形界面,沒有特別要求你一定要在文字界面答題。
- 請設定好這部主機的網路參數成為如下狀態 (全對才給分):
- 刪除原有的網路連線名稱,建立名為『 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 為上課時,老師給予的號碼)
- 針對 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/
- 時區與時間及網路校時功能設計:
- 你系統的時間好像怪怪的,時區與時間好像都錯亂了!請改回台北的時區與時間。
- 請使用網路校時 (chronyd) 的方式,使用貴校 ntp.ksu.edu.tw 作為伺服器,主動更新你的系統時間。
且系統啟動之後,會持續網路校時以取得最正確的時間。(若貴校並無 NTP 伺服器,則以 time.stdtime.gov.tw 作為來源)
- 系統的自動更新機制:
- 請至少升級核心 (kernel) 到最新版本,且升級完畢後,需要重新開機為宜
- 這部主機需要作為未來開發軟體之用,因此需要安裝一個『 RPM 開發工具 』的軟體群組,請安裝他。
- 請設定每天凌晨 3 點自動背景進行全系統更新。
- 帳號與權限控管方面的問題,包括新建帳號、帳號相關權限設定等
- 管理員的一般帳號設定:
- 請讓 student 可以順利使用自己的密碼操作 sudo 指令
- 帳號鎖定功能:
- 有個名為 alex 的帳號,他的密碼為 mygodhehe ,這個帳號有點怪異,因此身為管理員的你,得要將該帳號暫時鎖定。
- 意思是說,這個帳號的所有資源都不變,但是該帳號無法順利使用密碼登入的意思(密碼鎖定)
- 特殊系統帳號建置:建立一個名為 mysys1 的系統帳號,且這個系統帳號
- 不需要家目錄
- 不具備可互動的 shell
- 不需要密碼
- 預設帳號的權限屬性設定:
- 建立新用戶時,新用戶的家目錄應該都會出現一個名為 newhtml 的子目錄存在
- 新帳號登入時,預設將會『 rm='rm -i' 』『 cp='cp -i' 』『 mv='mv -i' 』這三個命令別名存在。
- 特殊帳號管理的需求:
- 讓 /home 這個目錄支援使用者與群組的 Quota 磁碟配額功能
- 增加一個名為 examgroup 的群組
- 特殊帳號建立的需求:請寫一隻名為 /root/users/addusers.sh 的腳本,這個腳本將用來處理特殊帳號的建置。
你應該使用 for…do…done 迴圈的方式來建立這隻腳本,而 for 迴圈內的程式碼,請依序使用如下的方式來建置妥當
- 建立帳號時的相關參數設計:
- 帳號名稱為: examuser11 ~ examuser30 共 20 個帳號
- 建立帳號時,每個帳號都要加入一個名為 examgroup 的次要群組支援
- 每個帳號的全名說明就是該帳號的名稱
- 每個帳號的密碼均為 myPassWord
- 並且每個帳號首次登入系統時,都會被強迫要求更改密碼 (chage ??)
- 每個帳號在 /home 的 Quota 為 soft --> 120MB, hard --> 150MB
- 修改每位帳號家目錄 (例如 examuser11 家目錄在 /home/examuser11/ ) 的權限成為 drwx--x--x 的模樣
- 腳本建置完畢後,請務必執行一次,以確定帳號可以順利被建立!
- 群組共用目錄的功能:請建立一個名為 /data/myexam 的目錄,這個目錄的權限設定是這樣的:
- 關於 examgroup 群組內的用戶權限:
- 該目錄可以讓 examgroup 的用戶具有完整的權限
- 而其他人不具備任何權限
- 在該目錄底下新建的資料(不論檔案還是目錄),新資料的擁有群組都會是 examgroup
- 關於 examuser30 與 student 這兩個帳號的特定要求:
- 因為 examuser30 帳號被盜,因此 examuser30 針對 /data/myexam 設定為不具備任何權限
- 因為 student 是管理員的一般帳號,該帳號也需要查詢 /data/myexam 目錄下的資訊。
- 請讓 student 可以讀、進入該目錄,但不可以寫入該目錄。
- 未來在此目錄底下新建的任何資料,預設 student 都具有讀與進入目錄的權限(沒有寫入的權限喔!)。
- 系統基本操作,包括系統備份、自動化腳本、時間自動更新等機制
- 尋找特殊權限的檔名資料:
- 找出在/usr/bin, /usr/sbin 目錄下,具有 s 或 t 等特殊權限的檔名 (SUID/SGID/SBIT)
- 將這些檔名連同權限,以類似 ll 輸出的資訊,將訊息輸出到 /data/findperm.txt 檔案中
- 找尋 IP 參數輸出:
- 使用『 ip addr show 』這個指令,將輸出訊息中,含有 inet 關鍵字的,但不能含有 inet6 關鍵字,一整列輸出
- 將上述的結果轉輸出到 /data/mynetwork.txt 檔案中。
- 系統備份腳本製作:由於系統上面有非常多的重要資料必須要進行備份,因此我們想要使用一支 script 來進行備份的動作,且將該 script 定時執行:
- 請撰寫一隻名為 /root/backup_system.sh 的腳本,來進行備份的工作
- 需要備份的目錄有:/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 來備份
- 請注意,撰寫完畢之後,一定要立刻執行一次該腳本!確認實際有建立 /backups 以及相關的備份資料喔!
- 定期備份功能:排定上述的備份指令在每個星期 6 的凌晨 2 點進行這個備份的動作,且這個script在執行的時候:
- 備份指令執行的過程請使用資料流重導向將過程完整的儲存在 /backups/backup.log 這個檔案中(包括正確與錯誤資訊)
- 使用 NI值 10 來執行此指令。
- 我的 /usr/sbin/setquota 這個檔案不小心刪除了,該如何救回來?(可以使用
rpm 去追蹤是哪個軟體提供的檔案後,移除再安裝該軟體即可完成此題目。)
- 服務的管理部份,以 httpd 為例:
- 讓你的 Linux 成為 http 以及 https 支援兩者的網頁伺服器
- 每次開機都會主動的喚醒這個伺服器功能
- Internet 應該要能夠連線到你的 http 以及 https 埠口服務
- 當輸入 http://localhost 時,可以看到的是你的 (1)姓名與 (2)學號
- 注意:上課提到的服務建置五個步驟!
- 腳本建立與系統管理
- 特殊原因,例如電力固定維護的關機情境問題:
- 你的系統將在 7 月的 20 號 08:00 進行關機的歲修工作,請以『單次』工作排程來設計關機的動作 (poweroff)
- 系統開機的通知訊息:
- 系統開機之後,會自動寄出一封 email 給 root,說明系統開機了。
- 指令可以是『 echo "reboot new" | mail -s 'reboot message' root 』
- 請注意,這個動作必須是系統『自動於開機完成後就動作』,而不需要使用者或管理員登入喔!(hint: rc.local)
- 為了方便大家使用 ps 外帶的參數來查詢系統的程序,因此管理員建立一隻名為 /usr/local/bin/myprocess 的腳本讓大家方便使用,腳本內容主要為:
- 第一行一定要宣告 shell 為 bash 才行;
- 主要僅執行『 /bin/ps -Ao pid,user,cpu,tty,args 』
- 這隻腳本必須要讓所有人都可以執行才行!
- 寫一隻名為 /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 』
- 這隻腳本必須要讓所有人都可以執行才行!
- 基礎檔案管理與檔案系統維護:
- 打包檔案的格式錯誤問題:
- 你的系統中有個檔名 /root/mybackup 的檔案,這個檔案原本是備份系統的資料,但副檔名不小心寫錯了!
- 請將這個檔案修訂成為比較正確的副檔名 (例如 /root/mybackup.txt 之類的模樣)
- 並且將該檔案在 /srv/testing/ 目錄中解開這個檔案的內容。
- LVM 彈性容量變化的效果:
- 目前的系統中, /home 應該使用的是 LVM 的維護模式。請找出 /home 所在的 VG 剩餘容量
- 將 VG 所有剩餘容量通通提供給 /home 使用,因此整個 /home 的容量將會放大很多。
- 在目前的系統中,掛載在 /home 的LVM格式資料,請將它的容量變成
- 且這個目錄內的資料並不會消失(無須重新格式化的意思)。
- 完成上述所有的題目後,請重新開機,並請在開機後 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: 系統救援與檔案系統部份
- 不是題目:
- 這個系統容量比較小,而且預設在文字界面
- 這個系統目前已經沒有圖形界面,所以你無法進入圖形界面。
- 若你想要使用圖形界面操作系統,可能需要安裝 yum groupinstall GNOME 才行。
- 同樣的,預設界面一定要是純文字界面才可以!
- 這部主機真的怪怪的,之前的管理員似乎在這部主機上面進行一些測試,追問之下有一些可能發生的原因,問題還不只一個。
請依據底下可能發生原因的問題予以克服,最終讓系統可以直接以 root 登入!
(hint: 千萬不要忘記 .autorelabel 的動作!)
- 系統救援 - 1 :核心相關資料錯誤造成的問題
- 原因:因為要測試核心開機功能,結果不小心將 initramfs 檔案刪除掉了,所以應該是無法順利開機。
- 建議救援方式:使用原版光碟處理,請進入系統救援的模式,並依據系統既有的核心版本,將 initramfs 重建
- 注意:(1)重建時,應考慮 grub2 的原本設定檔 (可能會在哪裡?),以找到正確的檔名,方可順利成功開機喔。
(2)你可以使用任何一個 CentOS 8.x 的光碟做救援,但是需要注意不同的核心版本的問題!
- 系統救援 - 2 :管理員手滑造成的 root 屬性問題
- 原因:因為幫用戶設定屬性,結果不小心『可能』修改到 root 這個帳號的相關屬性資料。
- 救援恢復的要求: (1)root 密碼恢復到 myCentOS8;(2)root 登入時可順利取得 bash shell 。
- 系統救援 - 3 :LVM 隨便刪除造成的錯誤
- 原因:在發生此錯誤之前,似乎曾經將系統的 LVM swap 刪除,是否如此造成系統錯誤還不得而之。
- 建議救援方式:不要使用光碟,使用核心支援的維護模式,查看一下開機選單的內容是否正確。
- 注意:在順利登入系統之後,你或許需要 (1)重建 grub 選單以及 (2)修改 /etc/fstab 檔案,以處理 swap 產生的問題
- 注意:刪除 swap 為正常的行為,所以,請不要重建 lvm 的 swap 裝置!從選單去處理!
- 不是題目:在使用 root 正確登入系統之後,請使用 vbird_book_setup_ip 設定好你的學號與網路。
- 系統初始化功能:
- 針對 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/
- 系統升級行為
- 只針對 kernel 升級即可
- 升級完畢請立刻重新開機,且使用新核心
- 關於開機選單調整
- timeout時間設定為 15 秒,
- 預設所有的核心參數都會加入 noapic 及 noacpi 兩個參數
- 開機選單多一個回到MBR的設定,選單名稱內亦須包含『 MBR 』字樣,且選單位於最後一個位置
- 開機選單在最後多一項可以進入圖形界面模式,這個圖形界面請使用原有的核心版本 (不是剛剛升級的核心版本),
且title必須含有『 mygraphical 』的字樣才行!
- 檔案系統方面的處理,包含分割(注意primary, extended, logical的限制)、格式化、掛載等
- 軟體磁碟陣列管理:目前的系統有個出現磁碟出問題而快要損毀 (degrade) 的軟體磁碟陣列,找出並修復好該系統。
- 該磁碟似乎已經被拔除一個 partition
- 找出系統中具有的跟 RAID 內的 partition 容量相同,且沒有被使用的 partition,那就是這個 RAID 缺乏的磁碟槽 (假設已經被修理好了)
- 請將該磁碟槽加入原本的系統中,以救援這個磁碟陣列 (讓他變成 clean 的狀態,改變 degraded 的困擾)
- 記憶體置換容量的處理:
- 目前這個系統裡面似乎所有的 swap 通通被刪除了!不過這樣實在不太好。
- 建立大型檔案,檔名為 /myswap.img,容量大概是 1G 即可。
- 將上述檔案格式化成為 swap
- 每次開機這個 swap 都會主動被系統所使用。
- 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 目錄下
- LVM 與 stratisd 的應用
- 將 centos 這個 VG 的剩餘容量,給予一個名為 thepool 的 LVM 裝置,最終會有 /dev/centos/thepool 裝置存在。
- 將 thepool 加入到名為 lvmpool 的儲存池 (thin pool) 當中
- 建立 thefs 檔案系統,並且開機會掛載到 /data/mypool 目錄下。
- 上述掛載最好使用 UUID 來處理!
- 系統效能處理:
- 請改用『 throughput-performance 』來動態調整系統效能
- 調整核心參數,讓每次開機都會修改成為底下這樣:
- /proc/sys/vm/dirty_ratio 改成 40
- /proc/sys/vm/dirty_background_ratio 改成 5
- /proc/sys/vm/swappiness 改成 10
- 完成上述所有的題目後,請重新開機,並請在開機後 10 分鐘內執行上傳腳本,否則系統不允許你上傳喔!
作業結果傳輸:請以 root 的身分執行 vbird_book_check_unit 指令上傳作業結果。
正常執行完畢的結果應會出現【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字樣。若需要查閱自己上傳資料的時間,
請在作業系統上面使用瀏覽器查詢: http://192.168.251.254 檢查相對應的課程檔案。
相關流程請參考: vbird_book_check_unit