# OS :::danger 請愛惜共筆,勿進行惡意刪減 ::: [NISRA CTF](https://class.enlightened.nisra.net/) :::warning 本堂課必用之操作工具 請大家於課前務必先行安裝哦!! ::: ## 課前安裝工具 - 虛擬機器 VirtualBox 全家桶 建議預留 40GB+ 硬碟空間 ~內附安裝說明~ - [主載點](https://drive.google.com/drive/folders/14Qh5CmGSDODujndOMRWsL_LvdaCTrV-A?usp=sharing) - [備用載點](https://drive.google.com/drive/folders/1OLpE-aaW7gVXrlfXjL_qEe1grPZ9iysC?usp=sharing) :::spoiler 安裝步驟(點這裡查看詳細步驟) 1. 安裝VirtualBox主程式 `VirtualBox-6.1.20-143896-Win.exe` 2. 安裝擴充套件 `VirtualBox_Extension_Pack-6.1.20.vbox-extpack` 需先安裝VirtualBox才能安裝擴充套件 > 別看這個鬼畜的副檔名 > 主程式裝完之後可以直接點兩下 3. 匯入`Ubuntu20_04.ova` 詳情請閱連結內使用簡介 ::: --- :::info [Slide](https://drive.google.com/file/d/1jeGZD7kLfwY4v6q2I8q22GlDawt3wQSt/view?usp=sharing) **虛擬機帳號密碼皆為 `nisra`** ::: ## Outline - Linux 基本介紹 - Why Linux? - 指令 & 操作 ### Linux 基本介紹 - Open Source - 類Unix ### Unix? - 多使用者 Multiuser - 多工 Multitasking - 多層次 Multilevel ### 類Unix? - Unix:符合Posix標準的作業系統 - 類Unix:帶有Unix特性但不符合POSIX標準 ### Windows? - **D**isk **O**peration **S**ystem - 單一使用者、單工 Unix:多個使用者、多工 - [Sauce: Quora](https://www.quora.com/Windows-code-can-be-considered-to-some-extent-spaghetti-code-What-are-some-examples-of-issues-due-to-messy-highly-complex-programming) ## Why Linux? ![](https://i.imgur.com/cGPKhhA.png) - 開放原始碼 Open Source - 穩定性 Stability - 適合伺服器 & 物聯網 - 核心夠小 ### Why Ubuntu? - 好上手 - 熱門 - 免費 ### 設立虛擬機器 - **匯入**並選擇 `.ova` 檔案 - 新增 - 類型:`Linux` - 版本:`Ubuntu (64-bit)` - 記憶體大小:根據自身需求 - 檔案位置和大小:VM大小 **Q&A** >想請問在虛擬機設定記憶體是會吃掉本機的記憶體ㄇ >[name=winnie5062611 (來賓)] >>對! >>[name=404] >ubuntu是甚麼 >[name=汶娟 莊 (來賓)] >>ubuntu就是一種linux的發行版本,其他常聽到的還有~~rat hat~~ Red Hat、kali......等 >>[name=forensic7306 (來賓)] ### 目錄結構 所有的檔案都在樹 ( **/** ) 底下 ![](https://i.imgur.com/xGy6Kfr.png) **Q&A** >可以問下如何在WIN10跟Linux間做傳輸檔案 >[name=a0981067552 (來賓)] >>我記得共用硬碟就好了 linux還可以做開機介面 >>(硬體裝修丙級的內容 >>[name=zhengtingliu0104 (來賓)] >>如果是同區網不同電腦,可以去讀讀看 linux Samba >>[name=秋分 (來賓)] ### 指令 - `pwd` - **P**rint **W**ork **D**irectory - 當前位在哪個目錄 - 我是誰(x) 我在哪(o) [name=404] - `cd <路徑>` - **C**hange **D**irectory - 前往資料夾 - 絕對路徑V.S.相對路徑 - 絕對路徑: `/home/nisra/Desktop/lab` - 要打完整 - 相對路徑: `Desktop/lab` - 跟現在位置重複的地方可以不打 - `cd ..` - 回去上層資料夾 - `ls` - **l**i**s**t - 常用參數 - `-a`: 所有檔案 (包含隱藏檔) - `-l`: 以清單顯示 - `cat <檔案名稱>` - 顯示檔案內容 - `./<檔案路徑>` - 執行檔案 - 直接打檔案路徑也行 - 也可以用單引號`'`括住路徑 `<檔案路徑>` - 個人習慣用`./` 而且做標題效果比較好X) [name=404] - `clear` - 把 terminal 清空 - 整理乾淨! - `sudo` - 以 root 權限做事 - 會需要輸入密碼 - **輸入密碼的過程不會顯示**~~所以不要問小天使為什麼不能打密碼,小天使真的會升天~~ - `chown <username> <file>` - 把 \<file> 的所有權轉給 \<username> - **密碼不會顯示哦!** - `chmod <parameter> <file>` - 更改檔案權限 > 我的東西我想怎樣就怎樣 > [name=404] > parameter 是甚麼意思 >> 打指令要附上的參數,在不同情況、不同指令下,參數是不是必要、需要及可輸入的數量可能不一樣 >> [name=秋分] - `chmod 777 myFile` : 權限改為任何人都可以做任何動作 (-rwxrwxrwx) - ![](https://i.imgur.com/RGnBfEc.png) - `chmod u+x myFile` : 為 user 增加執行 (eXecute) 的權限 - `su <使用者名稱>` - 切換成其他使用者 - 只打su預設是切換成root使用者 - `who` - 顯示當前線上使用者 - `whoami` - 我是誰 :heavy_check_mark: 我在哪 :negative_squared_cross_mark: - 顯示使用者名稱 - `mkdir <name>` - 建立一個\<name\>名稱的資料夾 > 開天闢地! > [name=404] - `touch <name>` - 創建名稱為\<name\>的空檔案 - 若 touch 已存在檔案則會更新檔案的時間戳記為現在時間 - `cp <source> <destination>` - 複製檔案 - \<source\> : 來源檔案的路徑 - \<destination\> : 目標路徑 (可以不包含檔名) - `mv <source> <destination>` - 移動檔案 - `mv ./file ./folder/file`: 把當前目錄的 file 移到同目錄的 folder 資料夾下 - 也可以用於改檔案名稱 - `mv ./統神 ./toyz的狗` - `rm <parameter>` > 把你阿嬤刪掉 > [name=404] - 刪除東西 - 參數 - `-f`: 強制 - `-i`: 詢問 - `-r`: 遞迴 (刪資料夾要加) - `rm file` - `rm -r folder` :::danger <span class="dang">**危**</span> #### 怎麼把整個系統給刪了 `rm -rf /` ::: - `rmdir <空資料夾>` > 我也不知道他為什麼存在 > [name=404] - 刪空資料夾 ### Lab Time 1 - 找彩蛋囉 - 活動範圍:`/home/nisra` - 檔名會包含HelloThere字元 - Hint: - `pwd` 我在哪 - `cat <檔案名稱>` 裡面有甚麼酷東東 - `cd <資料夾名稱>` 進入資料夾 - `<` `>`不用打! - `ls` 看所處位置有甚麼檔案 - 依需求,後面可接 `-la` - 隱藏檔在名字最前面會有一個點 - `./<檔案路徑>` 開啟檔案 - 小撇步 - 按 `tab` 可自動完成輸入 **Q&A** >講師可以把終端機的字放大嗎 謝謝!! >[name=dh10050160 (來賓)] >>Teams小教學:游標移到分享螢幕中,使用「Ctrl+滑鼠滾輪」可以對畫面進行縮放[name=CHA] > >請問(ubuntu)打開後要輸什麼密碼?[name=0110winnie (來賓)] >>nisra [name=蘇彥碩 (來賓)] > >這用find指令不是更快嗎 >[name=a0981067552 (來賓)] >>強制練習打指令www >>[name=404] > >為甚麼我打ls出現的方式不像講師一樣條列 >[name=dh10050160 (來賓)] >>`ls -la` >>[name=yaomark0216 (來賓)] >>條列式顯示是需要 `-l` 參數歐 >>[name=crazyfire] :::spoiler 謎底揭曉 `/home/nisra/Documents/.HelloThere` `/home/nisra/Downloads/HelloThere` `/home/nisra/Videos/HelloThere` ::: ### 權限 - 無論是雲端硬碟還是Linux都該好好設定的東西 > 尤其是你那個隱藏起來又特別佔容量的資料夾 > [name=404] - User - `id` - `root` - **0:root** - root講話最大聲 - 1~999:系統保留 - 4 `adm` - 27 `sudo` - 1000+:使用者 - Group - 右鍵 -> 屬性 -> 權限 - 擁有者:我能做什麼 - 群組:同群組能做什麼 - 其他:剩下的人能做什麼 - `d rwx rwx rwx` | d | rwx | rwx | rwx | | --- | ------ | ---- |:----:| | | 擁有者 | 群組 | 其他 | - `d` : 資料夾 - `r` : 讀取 - `w` : 編輯 - `x` : 執行 ### Lab Time 2 - 用終端機進入桌面上的 lab 資料夾 想辦法以 lock 使用者把 cat.txt 內容撈出來 (或者用其他方式) - lock的密碼 : `n15ra` **Q&A** >打錯太多次密碼會被鎖帳號嗎? >[name=sarapan19980221 (來賓)] >>沒記錯的話會被鎖時間 >>[name=404] :::spoiler 謎底揭曉 - 解法一 - 照著要求乖乖登入 lock 後再改 - `su lock` - 輸入密碼 - `chmod 0644 cat.txt` - 解法二 - 用 sudo 改權限或擁有者 - `sudo chown nisra cat.txt` - `chmod 0644 cat.txt` - 或直接`sudo chmod 0644 cat.txt` - 解法三 - 直接用 sudo cat - `sudo cat cat.txt` ::: <!-- - `mkdir <name>` - 建一個\<name>名稱的資料夾 - `cp <source> <destination> ` - \<source>~~:來源檔案的路徑 - \<destination>:目標路徑(可不包含檔名) - `rm <parameter>` - 把資料夾的東西刪光光!!!~~把你啊罵賣掉 - 刪除單一檔案 `test@test: ~$ rm hello.txt` - 刪除資料夾 `test@test: ~$ rm -r test` --> <!-- 指令是不是應該統一整理在上面@@? --> <!-- 應該是,不過這幾個好像前面也有人有打了耶? --> ### 一個有點小蠢的lab 1. 在lab資料夾內創建一個資料夾 + 檔案 2. 把檔案複製到新建的資料夾 3. 把原本(資料夾外)的檔案刪掉 4. 把資料夾的檔案移動到lab資料夾底下 5. 小心地把資料夾與檔案刪了 - Hint: - `touch <file>` 創建檔案 - `mkdir <name>` 創建空資料夾 - `mv <來源> <目的地>` 移動檔案 - `cp <來源> <目的地>` 複製 - `rm <file>` 移除 - `-r` 遞迴 `-f` 強制 - `rmdir <name>` 移除空資料夾 :::spoiler 謎底揭曉 1. `touch file` - `mkdir folder` 2. `cp file folder` 3. `rm file` 4. `cd folder` - `mv file ..` > 還記得`..`代表上層目錄嗎 5. `rm -rf file folder` ::: ### apt - debian 及其衍生的 Linux 套件管理器 - 可自動下載,組態,安裝二進位或者原始碼格式的軟體套件 #### 安裝 - `sudo apt install vim`: 安裝 vim - `apt moo`: 神秘的功能 (印出一隻牛) - `sudo apt upgrade`: 一鍵軟體升級 ### Vim - 從 VI 發展出來的文字編輯器 - 可以不使用滑鼠來完成所有作業 > 我都使用sublime啦 > [name=404] - INSERT mode - `ESC`:arrow_down: :arrow_up:`i,a,o,r` - NORMAL mode - `ESC`:arrow_up: :arrow_down:`:, ?` - COMMAND mode #### 編輯模式 - 進入編輯模式,按 - i : 由當下游標所在的字前面開始編輯 - a : 由當下游標所在的字後面開始編輯 - o : 往下新增一行開始編輯 - r : replce 掉後面一個字 - I : 從這行最前面開始編輯 - A : 從這行最後面開始編輯 - O : 往上新增一行開始編輯 - R : replace 不只一個字 (像是按了鍵盤的 insert) #### 指令模式 - 離開、顯示行號、尋找等 - `:w` 儲存 - `:q!` 強制退出 - `:q` 退出 - `:wq` 儲存後退出 > 個人補充 > `:set nu` 顯示行號 > `/<words>` 搜尋 (按 enter 後按 n 可以找下一個,N 找上一個) ### Lab time 3 1. touch \<filename\>.txt 2. vim \<filename>.txt 3. 按 i 進入插入模式 4. 輸入 Hello World! 5. 按 `esc` 回到一般模式 6. 按 ` : ` 進入指令模式 7. 輸入 `wq` 保存檔案並退出 8. cat \<filename\>.txt 來看看有沒有成功 ### Final Lab ![](https://i.imgur.com/oFTaEXb.png) ###### tags: `Enlightened` `NISRA` `2021` <style> .navbar-brand::after { content: " × NISRA"; } </style> <style> .dang { background-color: #CD5C5C; color: white; font-size: 20px; font-weight: bolder; border-radius: 50% 20% / 10% 40%; } </style>