## 第一章
### 常用指令介紹
`su`:切換為超級使用者
`su user`:切回一般<br>![](https://i.imgur.com/MBIPSHT.png)
`ls`:顯示當前家目錄內容
`clear`:清除
`updatedb`:更新資料庫
`cat`:觀看裡面內容
`pwd`:列印目前所在位置
`cd~`:切換到
`cd-`:上次所在路徑
`passwd`:變更密碼
`ifconfig`:查詢IP
### 遠端登入
工具:**PUTTY**
1. 先去找虛擬機IP,用`ifconfig`指令
![](https://hackmd.io/_uploads/SkEGLqGFh.png)
2. 去PUTTY打上ip並且連線
![](https://hackmd.io/_uploads/HJyPL5GYh.png)
**成功!**
![](https://hackmd.io/_uploads/HJC_8qztn.png)
## 第二章
遇到**permission denied**:權限不足,解決方法:`chmod+x`
**touch**:可以來創建空白檔案![](https://i.imgur.com/95d2PpU.png)
快速創建多個檔案:
![](https://hackmd.io/_uploads/HJrfi-MS3.png)
:::info
systemd為linux第一支程式
:::
**單人模式** 使用時機:忘記超級使用者密碼時
[https://www.unixmen.com/reset-root-password-centos-7/](https://)
**看系統服務是否被執行**
1. **netstat**:
`netstat -tunlp| grep 80/22`
t:tcp,u:udp,l:listen,p:process,n:不解析
![](https://i.imgur.com/cSEvwNg.png)
:::info
0.0.0:任何介面的ip
grep80沒跑:httpd沒啟動,process id在前面:2920(每台電腦不一樣)
0.0.0.0:22為ipv4 0:::22為ipv6
:::
2. **用systemctl status httpd/sshd**
uname:顯示系統名稱,-a:全部資訊 -r:只顯示版本資訊
![](https://i.imgur.com/ThlFv6E.jpg)
**如何更改主機名稱**:
`hostname`:主機名稱
更改名稱:`hostnamectl set-hostname 新名字` ,`bash `重新顯示
![](https://i.imgur.com/fkUlyiZ.png)
其他shell命令:
[https://blog.csdn.net/qq_45083975/article/details/105274397](https://)
**ls差別**
ls -a:會顯示隱藏檔(開頭有.的)
ls --all:同上
ls -l:顯示詳細內容(共七項)
![](https://i.imgur.com/SGCpJoO.png)
ls -l -d +目錄:顯示資料夾各種屬性(如果只有-l:顯示目錄內容有沒有東西)
ls -h:把檔案大小轉換成GB KB
可以合併 ls -al (順序顛倒也可以)
![](https://i.imgur.com/VxTyZ1V.png)
**更改使用者名稱**:
![](https://i.imgur.com/QN6SlU4.png)
## 第三章
### 搜尋關鍵字
`grep 關鍵字 檔案1`
可以搭配*來搜尋多個檔案 `grep 關鍵字 目錄/*含有的檔案`
例: (找出etc下含有.conf結尾的network檔案)
![](https://i.imgur.com/MvArpcU.png)
:::info
**參數介紹:**
`-i`:不分檔案名大小寫都顯示出來
`-n`:顯示關鍵字出現的行數
`-v`:撇除關鍵字外的檔案顯示出來
`-r`:把所有符合的檔案都顯示
`-A -B -C:` 連前/後/前跟後都顯示,後面加數字代表幾行<br>(顯示的內容不會特別以顏色標示)
![](https://i.imgur.com/35kFY8X.jpg)
:::
(參考資料
https://blog.gtwang.org/linux/linux-grep-command-tutorial-examples/
https://bpdocs.blueprism.com/bp-7-1/zh-hans/helpWildcardsAndRegex.htm)
## 第四章
### 介紹系統資料夾作用
**var目錄**:存放會變化的東西
**lib64**:主要linux函式庫(名稱最前面為==lib==,動態:==.so==,靜態:==.a==)
::: danger
靜態跟動態的差別:動態只需要一份可以重複利用,編譯出來檔案較小,<br>缺點:程式用在別的環境不一定跑得出來因為執行時一定要有動態函式庫在。
:::
**mnt**:掛載隨身碟&隨身硬碟
**etc**:系統設定配置以及使用者資料,只有管理員能做修改。
:::danger
resolv.conf:管理系統DNS伺服器檔案
:::
**boot**:把作業系統載入到記憶體(開機)
**root**:管理者的家目錄
**tmp**:暫時資料夾(任何人都看的到)
**media**:放DVD/CDROM
**dev**:系統設備目錄
**usr**:放第三方檔案(類似win:Program file)
### 相關指令
![](https://i.imgur.com/kiEPueZ.png)
**目錄指令**:<br>`.`:當前目錄,`..`:上一層目錄
把資料夾拷貝:`cp -r 拷貝目錄/目的地`
更改檔案或目錄名稱:`mv 原檔案名 新檔案名`
刪除檔案:`rm 檔案` (如果要跳過詢問 -f,要做詢問 -i)
刪除目錄:`rm -r 目錄`
新增目錄:mkdir
`mkdir 目錄名稱 -p`:如果資料夾不存在,則創建資料夾,如果資料夾存在,則不動作,也不會有錯誤發生
**man**:查詢一般指令
/搜尋字串,按q離開
## 第五章
### 文字編輯器
`vim`: 文字編輯器(文字化)
一開始進去是一般模式,編輯的話要按`i/a/o`
(可以編輯的時候最底下會出現INSERT編輯完成後`esc`再按`:`並打`wq`(儲存後離開)
就會回到命令模式。
如果權限不足就按`q!`(放棄修改並離開)
:::info
**一般模式**指令
gg跳到第一行
nG:移到第n行
w:移到下一個英文字,遇到其他字元會停止
W:移到下一個英文字,只有遇到跳行跟TAB才停止
$:移到行尾
ctr+g:顯示該行資訊
set nu:顯示行號
set nonu:不顯示
.:重複上一個動作
:::
## 第六章
### 在linux掛載usb(FAT32/NTFS)
==電腦不給力 無法繼續進行==
掛載指令:`mount(-t檔案類型)設備檔案 掛載目錄`
:::info
**檔案系統類型**
光碟片:iso9660
fat32 :vfat
:::
掛載後會被偵測為**SCSI設備**,名字依照USB為第幾個SCSI設備取名。第一個為`/dev/sdx`,第二個是`sdb`再來為`sdc`
### 磁碟分割
`fdisk+設備檔案`
:::info
**fdisk指令說明**
n:新增分割區
p:列出分割區資訊
d:刪除分割區
t:改變分割區類型
:::
## 第七章
### 使用者帳號管理
**新增使用者跟群組**
`groupadd name`:新增群組,群組放在etc/group裡面
查看使用cat指令會發現 <br>![](https://hackmd.io/_uploads/BkuBO4wE3.png)
`groupdel name`:刪除群組
`useradd[額外選項]name`:新增使用者,放在 ==etc/passwd==
![](https://hackmd.io/_uploads/H1UfQNwN3.png)
**額外選項內容**
(gid:主要id uid:指定id)
![](https://hackmd.io/_uploads/HyUbAVw4n.png)
`userdel name`:刪除使用者
**暫停該使用者登入**:修改密碼/修改shell->sbin/nologin
:::danger
新增使用者同時也新增了群組
密碼存放在etc/shadow不是放在passwd裡面!
系統管理者uid=0,一般使用者uid 1000開始 (user=1000)
如果是一般使用者後面shell是/bin/bash
是超級使用者是sbin/nologin
:::
**使用者密碼**(顯示出來是雜湊函數)
![](https://hackmd.io/_uploads/HJZn4EPNh.png)
==如果別人知道passwd跟shadow檔就會被帳號破解==
**破解方法**:https://trendoceans.com/how-to-install-john-the-ripper-on-all-platforms/
![](https://hackmd.io/_uploads/H1JzPVDNh.jpg)
## 第八章
### 行程管理
`ps` 可以看到曾經跑過的指令,`ps -f`可獲得更詳細資訊
![](https://hackmd.io/_uploads/B1R2pVMt2.png)
`ps aux` 會獲得
![](https://hackmd.io/_uploads/Hk9oySfFn.png)
:::info
**VSZ**:虛擬記憶體的使用量,以KB為單位
**RSS**:固定占用的記憶體,以KB為單位
**TTY**:該行程是由那一個終端機編號所產生的,因為上圖都是系統服務,因此TTY顯示為問號"?"
**STAT**:行程目前狀態,S代表正處於睡眠中,R代表在執行當中。
**TIME**:實際使用CPU的時間
:::
### 背景管理
`指令+&` :成為背景行程
`ctrl+Z`:把工作丟到背景暫時停止
`fg`(foreground):恢復工作
`ctrl+C`:工作中止 `TAB`:快速完成工作
`jobs`:顯示背景有哪些工作
![](https://i.imgur.com/HTcG8hi.png)
`kill PID`:刪除行程
![](https://hackmd.io/_uploads/SkHr7HfFn.png)
## 第九章
### 設定時區
`ntpdate`:更新系統軟體時間
`hwclock -w`:寫入硬體更改
![](https://hackmd.io/_uploads/HJpgrSMY3.png)
### 磁碟配額設定
## 第十章
### YUM
`yum install`:安裝套件
### RPM
-q : 查詢功能
`rpm -qa`:查詢系統已安裝的套件
`rpm -qi + name`:查詢特定套件
::: danger
RPM/YUM 差異:
前者只能下載電腦原本就有的,後者可以線上下載資源
:::
## 第十一章
### 檔案工具
#### dd
![](https://hackmd.io/_uploads/rJ-OcVFe6.png)
#### wc
### 目錄權限
**r:可觀看內容**
`chmod 該使用者-屬性 目錄`:讓使用者沒有權限觀看(添加權限就改+號)
![](https://hackmd.io/_uploads/S1jD9WzHn.png)
**x:可cd指令進去該目錄**
**w:可編輯該目錄(建立 刪除及更名)**
![](https://hackmd.io/_uploads/B1GU6bzSh.png)
==如果沒有權限只能修改檔案!,修改檔案內容是目錄內檔案管的==
如果目錄權限沒有w,就無法刪除檔案....但這只是對一般使用者,管理者還是可以照常刪除
![](https://hackmd.io/_uploads/BJainffr3.png)
:::danger
Q:
如何快速新增檔案&刪除所有檔案?
A:
快速新增:`touch {}{}`
快速刪除:`rm -rf *`
![](https://hackmd.io/_uploads/SJP8mzfBn.png)
:::
### 使用者
**su跟su - 差別**:前者會保留在原本的位置上,後者會跑到切換後使用者的家目錄。
su -:
![](https://hackmd.io/_uploads/SJdn9fGBh.png)
su:
![](https://hackmd.io/_uploads/HJorcGMHn.png)
**忘記密碼/未設定**
跳回user 輸入`sudo passwd 使用者`
![](https://hackmd.io/_uploads/rJE7iMMHh.png)
**變更檔案使用者**
`chown -R 使用者.群組 目錄` /`chown -R 使用者:群組 目錄`
![](https://hackmd.io/_uploads/HyetxZ8Bh.png)
### 批次新增使用者
之後再實作
https://www.hanktsai.com/2021/01/shell-script-linux.html
http://d8890007.blogspot.com/2012/11/linux_14.html
## 第十二章
### 檔案屬性
`chattr +屬性 檔案` :更改該檔案的屬性
**i:不可修改檔案**
![](https://hackmd.io/_uploads/r15QLZLr3.png)
如果要更改的話要先把屬性拿掉
![](https://hackmd.io/_uploads/ByrHD-Ir3.png)
**a:只能增加內容,不可刪除**
![](https://hackmd.io/_uploads/ryjJFWUH2.png)
進入vim模式編輯後就會出現
![](https://hackmd.io/_uploads/rysJF-8Hn.png)
:::danger
Q:那要怎麼增加內容??
A:用**echo**指令!
![](https://hackmd.io/_uploads/SkR5tZ8H2.png)
成功
:::success
參考資料:https://blog.gtwang.org/linux/how-to-make-file-immutable-on-linux-chattr-command/
:::
### ACL
`dmesg | grep -i acl` :檢查acl設定
![](https://hackmd.io/_uploads/rJdz55FS2.png)
如果出現上圖的代碼就表示可以用acl
`getfacl file`:查看細節權限
![](https://hackmd.io/_uploads/SJufqqKBh.png)
`setfacl -m u:username:權限 file` :設定權限
![](https://hackmd.io/_uploads/SJufc9FB3.png)
![](https://hackmd.io/_uploads/Sy_zccFSh.png)
## 第十三章
### 安裝apache
apache 是架站伺服器
啟動前要先有以下套件:
![](https://hackmd.io/_uploads/Byzw5cfYh.png)
::: danger
apache在CentOS稱為httpd!
:::