###### tags: `lsa`
# 113 LSA 期中考題_筆試
:::info
## 規則

- 如有問題請舉手發問。
- 請勿編輯本頁面。
- 請勿以私訊或聊天室等任何方式彼此溝通。
- 當然也請不要直接實體溝通啦... 那算作弊哦
- **通訊軟體請關閉**
- 可以上網自由地找資料、補充這學期相對應的共筆頁面。
- 可使用 ChatGPT ,但不可直接照抄,請吸收內容之後,在腦中整理過、在機器上驗證過後,以自己重新整理過的方式回答。如助教判定沒有吸收過就回答,該題 0 分。(其實很容易分辨,也有工具能檢測)
- 上機需要 DEMO,DEMO 時若助教發現答案錯誤,學生可以有一次修正機會。
- 筆試部分,Google 表單繳交前,請舉手找助教,在助教面前繳交。
- 請用**學校信箱**回答問卷
:::danger
**沒在助教面前繳交者,視同沒交**
:::
- 提早完成可以提早離開。
- 如果時間到還沒完成,老師與助教會視情況決定是否開放延長作答時間。
- 如果考試中監考者(老師及助教)視個別情形有額外給提示,那是額外的,不是義務也不是權益。如果有同學真的只是打錯字或只差臨門一腳,是否提示的決定權在監考者身上。
:::
:::warning
本次考試作答環境以 Ubuntu 22.04 為主
:::
**We Are Watching You.**
## 甲、筆試題
### 一、基礎(23%)
小貝和室友共用一台伺服器,並且各自有各自的帳號。
小貝新增了一個純文字檔案叫做 `homework_A.txt` 來儲存他的作業解答,放在自己家目錄中的 `~/bei` 資料夾裡,接下來他有一些操作,請給出能達成這些指令的操作。
1. 小貝想要備份這個檔案,備份檔叫做 `homework_B`。`homework_A.txt` 與 `homework_B` 兩個檔案個別更改的時候,彼此之間不會影響到彼此(1%)
2. 小貝怕室友會偷偷跑過來偷看自己的作業,又怕好不容易備份的 `homework_B` 自己會不小心動到,所以決定對這兩個檔案做一些設定:(3%)
- 把 `homework_A.txt` 的權限改成只有自己可讀可寫,其他人都別想動這份檔案
- 把 `homework_B` 的權限改成只有自己可讀,其他人都別想動這份檔案
3. 最後小貝把 `homework_A.txt` 完成了,他覺得這檔名好醜,他想改名成 `完成啦`(1%)
4. 在 `~/bei` 中,小貝建立一個資料夾 `img`,裡面放了一些照片,由於**要和他人共用這些照片**,權限是`777`。小貝希望這個資料夾裡的照片只有自己和 root 可以刪除。(2%)
5. 老師叫小貝去施展某種魔法,讓之後所有新創的使用者家目錄都會自動預設有個叫 `lsa` 的空檔案(3%)
6. 老師突然叫小貝幫小利建立帳號,要讓小利也可以使用伺服器,並且過程中會自動產生小利自己的家目錄。(2%)
7. 室友小羅突然忘記他在伺服器上的密碼,小貝可以更改什麼檔案,協助他把密碼清空,並且小羅的家目錄不會消失。(3%)
8. 小貝想要找根目錄底下的某個資料夾,但他忘記是哪一個,只記得是 `s` 開頭的。要如何印出根目錄底下所有(且只有) `s` 開頭的資料夾?(4%)
9. 小瓦是個火車狂熱者,他喜歡有事沒事就打 `sl` 指令,有天他突發奇想,想要跑 `sl` 的同時也能把小火車輸出到檔案 `bubu` 裡面(2%)
10. 小羅希望系統能每分鐘將 `date` 指令的輸出儲存到家目錄底下的 `date.txt` 這份檔案,且不會蓋過舊的輸出(2%)
### 二、檔案傳輸 (6%)
某天 BlueT 叫 A 同學交作業到一個有開 SFTP 服務、叫做 `lsa.moli.rocks` 的伺服器上,於是 A 同學想要利用遠端檔案傳輸工具,把存在**本機**(local)上的 `~/lsa/homework.txt` 傳到這台**遠端** server 的 `/home/student/ex1/homework.txt`。
1. 請問下列哪個選項不是能達成這件事的工具: (2%)
- sl
- scp
- rsync
- sftp
2. 請選出正確下指令的順序,讓 A 同學能達成這件事(假設 client 和 server 目前工作目錄都在自己的家目錄底下) (2%)
1. `put homework.txt`
2. `cd ex1`
3. `sftp student@lsa.moli.rocks`
4. `lcd lsa`
- ( A ) 3412
- ( B ) 1234
- ( C ) 4312
- ( D ) 3241
3. 請問若要用 scp 這套工具來做到這件事,要打的指令何者為正確? (2%)
- `scp ~/lsa/homework.txt student@lsa.moli.rocks:/home/student/ex1/homework.txt`
- `scp student@lsa.moli.rocks:~/lsa/homework.txt /home/student/ex1/homework.txt`
- `scp /home/student/ex1/homework.txt ~/lsa/homework.txt`
- `scp student@lsa.moli.rocks:/home/student/ex1/homework.txt ~/lsa/homework.txt`
### 三、遠端連線 (4%)
1. 請問下列哪些通訊協定的流量是未加密經由網路傳輸? (2%)
- HTTPS (SSL/TLS)
- Telnet
- SSH
- FTP
2. 以下列表中,請問用哪一個方法驗證身分最可以預防中間人攻擊帶來的危險? (2%)
- Hash 雜湊函式
- 對稱式加密
- 非對稱式加密
- 帳號、密碼
### 四、網路規劃相關 (20%,各 2%)
- 如何查看本機的所有網卡及其分配的 IP 位址
- 有一網段 `192.168.1.0/26`,請說明此網段的網路位置及廣播位置、可分配的 IP 位址、最多可容納多少主機 (需仔細說明這個數字如何計算)
- 如何查看目前系統內的路由表? 如果需要新增一條預設的路由,應該怎麼做?
- `ping` 的作用是什麼? 如果希望限制 `ping` 的次數為 5 次,應該如何達成?
- 如何看出系統上所有正在執行的網路服務,以及其監聽的位址及通訊埠?
- 如何知道在向 `google.com` 發出連線時,封包傳輸路徑經過哪些跳點 (hop)?
- 如何使用系統內建的防火牆允許進入的 SSH 連線? 如何使用系統內建的防火牆阻擋進入的 ping 連線?
- 如何使用 `telnet` 進行 HTTP 請求? 試說明步驟與內容
- 想要知道目前系統使用的 NAT 規則,可以使用什麼本學期有教的指令?
- 想要讓本機在解析 `example.local` 這個域名時,解析結果會是 `10.0.0.10` 這個位置,要怎麼做? 如何驗證有成功綁定?
### 五、web server(3%)
- nginx config 檢查
- 在生產環境,我們不希望因為有部分設定檔的問題影響到運作中的 web server,所以在啟用 新增/更改 的設定檔前會檢查並確保設定檔的基本語法沒有問題。請問在 nginx 要如何達成 ?
### 六、除錯(3%)
- 目前檔案結構
```
root@ubuntu22:/lsa$ tree -rp
[drwxrwxr-x] .
├── [-rw-rw-r--] test.txt
└── [drwxrwxr-x] test
1 directory, 1 files
```
- 建立一個軟連結:`ln -s ./test.txt ./test/`
```
root@ubuntu22:/lsa$ tree -rp
[drwxrwxr-x] .
├── [-rw-rw-r--] test.txt
└── [drwxrwxr-x] test
└── [lrwxrwxrwx] test.txt -> ./test.txt
1 directory, 2 files
```
- 存取軟連結檔案,會有以下 error,請問為甚麼,以及如何解決(讓軟連結的檔案可以被正常存取)?
```
root@ubuntu22:/lsa$ cat test/test.txt
cat: test/test.txt: Too many levels of symbolic links
```
:::info
ref
https://unix.stackexchange.com/questions/141436/too-many-levels-of-symbolic-links
:::
### 七、Firewall(20%)
#### DMZ (20%)
:::info

**初始環境**
- 防火牆的 policy 都是 `ACCEPT` 且沒有任何規則
- Firewall 有 3 個網路介面
| NIC | IP |
|:------ |:---------------- |
| `eth0` | `192.168.0.1/24` |
| `eth1` | `192.168.1.1/24` |
| `eth2` | `192.168.2.1/24` |
- routing table 如下:
| Destination | Genmask | Iface |
|:------------- |:--------------- |:------ |
| `192.168.0.0` | `0.0.0.0` | `eth0` |
| `192.168.1.0` | `255.255.255.0` | `eth1` |
| `192.168.2.0` | `255.255.255.0` | `eth2` |
:::
1. 解釋為何需要 DMZ 這樣的架構(2%)
2. 如何啟用 Firewall 轉發封包的功能(2%)
3. 試將 DMZ 的主機以及 LAN 的主機的 default gateway 設定成 Firewall(2%)
> 接下來的題目,請說明要如何設定防火牆的規則以及所有涉及的指令
4. Internet 能夠透過防火牆的 80 通訊埠連到 DMZ 內部的 web server,但無法連到 LAN 的內部主機 (2%)
5. DMZ 內部的主機要能夠透過防火牆連線到外網,但無法主動連線到 LAN 內部(2%)
6. LAN 能夠透過防火牆連到外網,也能夠透過防火牆連線到 DMZ 內部(2%)
7. 若希望 LAN 只能使用 `ssh` 連接到 DMZ 應該如何設定 DMZ 中的主機以及修改防火牆規則(2%)
8. 若希望 DMZ 內的主機只能瀏覽 Internet 的網頁應該如何修改防火牆規則(6%)
## 丙、加分題
1. 列出以下助教分享的一個課程主題(各1%)
- 蓬萊人偶
- Josh
- 家正
- 葉芷妤
- 吳凱賀
2. 本課程因颱風假停課的兩個日期?(各1%)
3. sudo apt upgrade 最少可以按幾個按鍵輸入完畢,是哪幾個按鍵(2%)
4. ~~幫助教或老師介紹對象並撮合成功,自告奮勇毛遂自薦也可以 (10%)~~