# Linux 學習筆記 :::info 本筆記皆為原創 課程:Linux作業系統實務 老師:柯志亨老師 課本:CentOS 7.3建置管理與伺服器架設實戰 ::: ## 2/14 linux 核心:kernel(管memory,process,socket,driver,file system) linux不是最新版最好,主要追求穩定 LTS:long term support,最少10年 VM:虛擬機 Host:主機 * CentOS7 ---> Internet CentOS7 <--x--- Internet (私有網路,無法從外面傳進來) * CentOS7 ---> Host CentOS7 <--- Host ### 今日作業 1. 安裝Virtual Box(完成) 2. 設定虛擬機(完成) ## 2/21 #### Virtual Box 要配2張網路卡 1. NAT:連出去Internet 2. Host-only:可以跟Host相連 ### 指令 [~]:代表家目錄,home directory [pwd]:顯示當前工作目錄,print work directory [cd]:切換目錄,change directory [-]:上一個路徑 [ifconfig]:看ip設定 [clear]:清除螢幕 [sudo]:一般身份轉管理員(root)身份{臨時}l [su]:一般身份轉管理員(root)身份{永久} [apt]:安裝的指令(Ubuntu) [yum]:安裝的指令(RedHat) [gedit]:文字編輯器 [reboot]:重新開機 [kill -9 pid碼]:強制刪除(pid碼每個不一樣) [cat]:看檔案內容 [echo]:把後面文字再複製一次 [>]:導向 ### 今日作業 1. 關閉防火牆(完成) 2. 遠端連接(完成) 3. 遠端傳送檔案(完成) ## 3/7 慎用bridge網路 IPv6前面是fe80的話是本地用 使用IPv6搜尋的話要加"[]" free software:自由軟體(非免費軟體) [ls]:顯示當前目錄 [$?]:上一個指令執行的對錯 [./檔案名]:執行檔案(.代表當前目錄) Linux架構:最外層(App),第二層(Shell),第三層(Kernel) ### 今日作業 1. 使用IPv6連線(完成) 2. 建立ChatGPT 的Line Bot(完成) ## 3/14 [halt -p]:關機 [yum remove 軟體]:移除軟體 虛擬機快照:類似存檔,之後可以還原快照 快捷輸入:打幾個字母後按tab可出現已有的檔案名 PATH:系統環境變數 Linux磁碟分割至少有兩個,[/]根目錄,[swap] (必考) 匯入匯出要在關機狀態下 ### 今日作業 1. 在虛擬機中編譯python語言(完成) 2. 執行自動加字幕python程式(加分)(完成) ## 3/21 命令提示字元:[\$]->一般使用者, [#]->超級使用者(必考) 管理者帳號:[root]->Linux,[administrator]->Windows Linux被執行的第一支程式是:[systemd]->新(pid=1),[init]->舊(pid=1) pid(process identifier):行程識別碼 Linux裡副檔名只是參考,主要看屬性 ### 指令 [ctrl +A]:跳到最前面 [ctrl +E]:跳到最後面 [alt +D]:刪除後面所有字元 [touch +檔案名]:產生空白檔案 [chmod +x]:改變屬性,賦予可執行權限 [pstree]:行程表格 [uname]:現在使用的作業系統(-a 完整資訊,-r kernel版本) [netstat -tunlp | grep 埠號]:看網路埠號狀態 (-t tcp,-u udp,-n 不解析,-l listen,-p process ,| 管道,grep 篩選 ) [ctrl +C]:中斷程式 [ctrl +Z]:暫停程式 [fg]:繼續執行程式 ### 今日作業 1. 使用單人模式改root密碼(完成) 2. 指令測試(完成) ## 3/28 檔案系統(windows):FAT16,FAT32,exFAT,NTFS Linux:萬物皆檔案 ### 資料夾用途 dev:存放有形無形的Device bin:存放二進制檔的目錄(執行檔) sbin:存放管理者(root)指令或工具 usr:存放第三方的所有東西 var:存放會變動資料的地方,log檔也在這(記錄檔) etc:存放系統設定檔 ### 指令 ![](https://i.imgur.com/5lGqfk5.jpg) [.]:當前目錄 [..]:上一層目錄 [cp -r +目錄 +位置]:搬整個目錄 [mv 要改的檔名 改成的檔名]:更改檔名 ## 課本後習題 ### 第一章 1. 1991年首先撰寫Linux核心程式為下列何者? A:Linus Torvalds(林納斯·托瓦茲) 2. 下列何者是Linux常見的發行套件? * RedHat * CentOS * Ubuntu * SuSE * Fedora * ...... 3. 自由軟體的權利? * 可任意使用 * 可自由散佈 * 可修改軟體以符合自己用途 * 散佈修改後的軟體 4. Linux的國際認證有哪些? * LPIC * RHCE * NCLP ### 第二章 1. 超級使用者root擁有甚麼權限? A:系統內的一切權限 2. 讓Linux系統啟動並運作需要幾個分割區? A:2個(根目錄'/',swap) 3. 系統安裝完後,啟動時需再建立一個新帳號,作用是? A:基於安全性考量 ### 第三章 1. Linux作業系統類型? A:多人多工 2. 最高權限管理者的命令提示符號是什麼? A:# 3. 一般使用者的命令提示符號是什麼? A:$ 4. 命令提示符號前的中括號提供那些資訊? * 使用者名稱 * 主機名稱 * 當前目錄 5. Linux指令以何種方式命名? A:英文小寫 6. 查詢Linux目前登入的使用者帳號資訊要輸入何種指令? A:w 7. 列出檔案清單的指令是什麼? A:ls 8. 家目錄的符號是什麼? A:~ 9. 虛擬主控台最多可以多少個? A:6個 ### 第四章 1. 根目錄的代表符號是什麼? A:/ 2. Linux檔案與目錄名稱大小寫意思一樣嗎? A:大小寫表示不同意思 3. 根目錄下放所有系統設定檔的目錄是? A:/etc 4. 放變動性和系統等待排隊處理檔案的目錄是? A:/var 5. 查詢目前檔案清單下的詳細資訊指令是? A:ls -l 6. 檔案的詳細資訊裡權限欄位的r代表? A:可讀 7. 檔案的詳細資訊裡權限欄位代表可寫可刪除的是? A:x 8. Linux目錄下..目錄代表什麼? A:上一層目錄 9. 從家目錄切到/usr/local的指令要下什麼? A:cd /usr/local ## 4/18 Linux裡連結分兩種:hard link,symbolic link | 功能 | 符號連結(symbolic link) | 硬連結(hard link) | | -------- | -- | - | | 跨越分割區 | O | X | | 支援目錄 | O | X | | 目的地刪除後 | 無效連結 | O | | 權限 | 無法自訂,依目的地檔案或目錄權限 | 可自訂權限 | windows捷徑可以連結到任意檔案或資料夾 CentOS檔案系統:XFS inode是一種meta data ### 指令 . [stat +檔案]:可以看檔案詳細內容 [which +檔案]:可以找出執行檔的位置 [ls -l -d +資料夾]:可以看資料夾的長格式資料 [ls -i]:可以列出檔案的inode編號 [ln -s +連結目標 +連結名稱]:建立符號連結(建立硬連結就少掉-s) [file +檔名]:可以看檔案是甚麼類型 [df]:可以看硬碟資料,加-h可以變常見單位 ## 4/25 Linux裡0是標準輸入,1是標準輸出,2是標準錯誤輸出 /dev/null是特別的黑洞,不會顯示輸出 放管道"|"右邊的一定要可以處理標準輸入 有名字的管道可以先執行 增量備份:第一次全部備份,之後只備份有變動的地方 用`包起來的會先執行 ### 指令 . [du]:可以看檔案或資料夾大小,最後一行是合計,加-s是只看最後一行,加--max-depth=數字,可以只看某一層檔案或資料夾的大小 [echo $?]:可以判斷上一個指令的結果,0是成功 [mkfifo +管道名字]:可以建有名字的管道 [>>]:追加 [updatebd]:更新資料庫 [locate +檔案]:可以在資料庫找檔案 [find +位置 -perm +權限值]:可以找符合權限值的檔案 [find ... -exec rm {}\\;]:找出符合的檔案後刪掉(刪目錄時要加-rf) [tar cvfz +檔名.tar.gz +要打包的地方]:壓縮檔案,c:創建檔案,v:顯示詳細資料,f:檔名,z:要壓縮 ![](https://i.imgur.com/XU0h61p.jpg) ## 5/2 通配符:用來匹配檔案名稱,*代表所有,?代表一個字母 正則表達式:檔案裡的內容匹配 * *代表重複前面的字母0~多次 * ?代表重複前面的字母0,1次 * +代表重複前面的字母1~多次,要用egrep才能用 * ^代表以...開頭 * $代表以...結尾 * []代表匹配裡面的 * |代表or的意思 * ^$代表空白行 Linux的參數可以拆開,顛倒,合併等等 指令前加\會恢復指令最初的設定 dev會顯示兩個數字,第一個是主設備號(區別不同設備),第二個是次設備號(屬於第幾個) vim:一進去是一般模式(不能輸入),輸入a,o,i可進入編輯模式,exc鍵回一般模式,打:wq儲存並退出 ### 指令 grep * -n:可以顯示行號 * -i:不分大小寫 * -v:找出...以外的 * -A 數字:顯示出...跟後面幾行 * -B 數字:顯示出...跟前面幾行 . [ps]:看背景有甚麼在執行 [wc]:統計 [mount -t 類型 裝置 檔案]:裝置掛載 [vim]:文字化編輯器 ## 5/9 USB若是FAT32的話會自動掛載,NTFS的話不會 root的uid=0 /etc/shadow是放密碼的,會經過雜湊 拿到passwd,shadow的話可以用john the ripper破解 rockyou.txt是常見的巨大密碼檔 ### 指令 . [lsusb]:顯示USB [umount 位置]:取消掛載 [groupadd +名字]:創建名叫...的群組 [groupdel +名字]:刪除名叫...的群組 [useradd +名字]:新增帳號,同時產生一個群組 [passwd +使用者]:更改使用者密碼 ### 今日作業 1. USB的NTFS格式掛載(已完成) 2. 用腳本建立多個使用者(已完成) ## 5/23 ACL(Access Control List):存取控制串列(高級權限) SRE(Site Reliability Engineering):網站可靠性工程 MTBF(Mean Time Between Failure):平均故障間隔時間,越高越好 MTTR(Mean Time To Repair):平均修復時間,越低越好 SPOF(Single Point Of Failure):單點故障 改ssh port可以vim sshd_config firewalld要永久設定的話加 --permanent ### 指令 . [getfacl +文件]:看高級權限 [setfacl -m u:使用者:權限 +文件]:把特定的權限給特定的人 [setfacl -m m:權限 +文件]:修改檔案權限遮罩 [firewall-cmd --get-zones]:看不同的zone [gzip +文件]:壓縮文件 [gunzip +壓縮檔]:解壓縮文件 [tar -czvf 壓縮後的檔名 要壓縮的檔案]:壓縮檔案 [timedatectl set-timezone +時區]:改時區 [timedatectl list-timezones]:顯示所有時區 ### 今日作業 1. 在只開啟ssh的情況下從外網連至http(完成) ## 5/30 用\`括起來的會優先執行,$()也是 NTP:網路校時協定 cluster:集群 先用history後用!+指令號碼 可以直接執行,用! +關鍵字 會自動往上匹配 access_log:訪問的相關資料 寫指令盡量用絕對路徑 ### 指令 . [ntpdate +網址]:調時間(記得先設好時區) [crontab -l]:看有甚麼排程 排成的時間用法(若要到秒的話可以用sleep): ![](https://hackmd.io/_uploads/HJlu4vgYU3.jpg)