# 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)