以centos7為主
linux初始化
centos安裝


安裝位置


40G分配記憶體
/ 30G
/boot 200M
swap 4G
/tmp 5935M



軟體安裝



創建賬戶




磁盤磁區表示方法
linux中將硬碟、磁區等設備均表示為檔案

硬碟與標準磁區結構

常見的檔案型別
- centos7默認使用的檔案系統型別
- XFS,日志檔案系統
- SWAP,交換檔案系統
- linux支持的其他檔案系統型別
- EXT3、EXT4
- FAT16、FAT32、NTFS
- XFS、JFS
- ……
inode節點與塊
元資料 : 創建者、創建日期、大小等,稱為索引節點
資料塊 : 由多個扇區組成,常見4KB一塊,存放檔案資料和目錄資料
inode區域 : 存盤元資料的區域,檔案位元組數、權限、歸屬、時間錯、連接、資料塊位置
inode bitmap : inode使用情況,比如空閑的inode
block bitmap : 塊的使用情況,比如空閑inode與空閑塊等資訊
linux系統引導程序
開機自檢[BIOS] => MBR引導 => GRUB選單 => 加載內核[kernel] => init行程初始化
init行程
由linux內核加載運行/sbin/init程式
是系統中的第一個行程
PID[行程標記]號永遠為1
Systemd行程
代替init行程,成為主流
程式位于/usr/lib/systemd/systemd
Systemd的優勢
- 向下兼容
- 更快的啟動熟讀,集中化命令管理,更合理的命令結構
Systemd單元型別
| 單元型別 | 擴展名 | 說明 |
|---|---|---|
| Service | .service | 描述一個系統服務 |
| Socket | .socket | 描述一個行程間通信的套接字 |
| Device | .device | 描述一個內核識別的設備檔案 |
| Mount | .mount | 描述一個檔案系統的掛載點 |
| Automount | .automount | 描述一個檔案系統的自動掛載點 |
| Swap | .swap | 描述一個記憶體交換設備或交換檔案 |
| Path | .path | 描述一個檔案系統中檔案或目錄 |
| Timer | .timer | 描述一個定時器[用于實作類似cron的調度任務] |
| Snapshot | .snapshot | 用于保存一個systemd的狀態 |
| Scope | .scpoe | 使用systemd的總線介面以編程的方式創建外部行程 |
| Slice | .slice | 描述居于Cgroup的一組通過層次組織的管理系統行程 |
| Target | .target | 描述一組systemd的單元 |
運行級別
對應的Systemd目標
| 運行級別 | Systemd的target | 說明 |
|---|---|---|
| 0 | target | 關機狀態,使用該級別時將會關閉主機 |
| 1 | rescue.target | 單用戶模式,不需要密碼驗證即可登錄系統,多用于系統維護 |
| 2 | multi-user.target | 用戶定義/域特定運行級別[默認等同于3] |
| 3 | multi-user.target | 字符界面的完整多用戶模式,大多數服務器主句運行在此級別 |
| 4 | multi-user.target | 用戶定義/域特定運行級別[默認等同于3] |
| 5 | graphical.target | 圖形界面的多用戶模式,提供了圖形桌面作業系統 |
| 6 | reboot.target | 重新啟動,使用該級別時將會重啟主機 |
init 3和systemctl isolate multi-user.target實作的效果一樣
目錄結構

| 目錄 | 說明 |
|---|---|
| bin | 存放的是所有用戶都可以執行的命令檔案 |
| dev | 存放的是設備[硬碟、光碟、攝像頭、滑鼠等] |
| home | 普通用戶的家目錄 |
| lib64 | 庫檔案所存的目錄 |
| mnt | 移動存盤設備的掛載目錄 |
| proc | 存放記憶體所執行的檔案,能查看,不能修改 |
| run | 自動運行的程式 |
| srv | 一些服務 |
| tmp | 臨時檔案 |
| var | 日志檔案 |
| boot | 引導程式 |
| etc | 組態檔 |
| lib | 庫檔案所存的目錄 |
| media | 媒體檔案 |
| opt | 存放的重要檔案和proc差不多 |
| root | 管理員用戶專用的家目錄 |
| sbin | 和bin相對應,但只有管理員可以執行 |
| sys | 系統 |
| usr | 第三方安裝軟體 |
shell
linux系統中運行的一種特殊程式
在用戶和內核之間充當翻譯官
用戶登錄linux系統時,自動加載一個shell程式
bash是linux系統中默認使用的shell程式[檔案位于/bin/bash]
linux基礎配置
關閉防火墻
-
臨時關閉
setenforce 0
-
永久關閉
vim /etc/selinux/config

systemctl stop firewalld
iptables -F
系統服務控制
systemctl 控制型別 服務名稱
控制型別
- stop : 關閉
- start : 開啟
- restart : 重啟
- reload : 重新加載
- status : 查看狀態
運行級別切換
查看運行級別
runlevel
systemctl
runlevel只能查看切換運行級別與當前運行級別
systemctl時能查看默認的運行級別
臨時切換運行級別
init
systemctl
init的命令引數是運行界別所對應的數字
systemctl的命令引數是具體的target
優化啟動項
系統服務管理工具
ntsysv工具
提供一個互動式、可視化視窗,可以在字符終端運行,便于集中管理多個服務
systemctl工具
不提供互動式、可視化視窗,管理單個服務效率更高
- 查看系統服務的啟動狀態
systemctl is-enabled 服務名稱
- 設定系統服務的啟動狀態
systemctl enable/disable 服務名稱
linux命令介紹
linux命令分類
- 內部命令
- 繼承與shell解釋器程式內部的一些特殊指令,也稱為內建(Built-in)指令
- 屬于shell的一部分
- 沒有單獨對應的系統檔案
- 自動載入記憶體,可以直接使用
- 外部命令
- linux系統中能夠完成特定功能的腳本檔案或二進制程式
- 屬于shell解釋器程式之外的命令
- 每個外部命令對應了系統中的一個檔案
- 必須只帶其對應的檔案位置,由shell加載后才能執行
linux命令格式
命令字 [選項] [引數]
幫助資訊
help
--help
man / info
別名資訊
- 設定別名
alias 命令別名='命令'
alias ll='ls -l --color=auto'
- 洗掉別名
unalias 命令別名
unalias ll
linux基礎命令
目錄和檔案操作
查看及切換目錄
pwd
- 顯示用戶當前所在的作業目錄位置、
cd
- 將用戶的作業目錄切換到其他位置
| 指令 | 描述 |
|---|---|
| cd ./ | 切換當前目錄[不做變化] |
| cd ../ | 切換到上一級目錄 |
| cd ~ | 切換到宿主目錄 |
| cd - | 切換到上一次執行cd的目錄 |
ls
| 指令 | 描述 |
|---|---|
| ls -l | 以長格式顯示 |
| ls -h | 顯示檔案大小等資訊 |
| ls -a | 查看當前目錄下的隱藏檔案 |
| ls -A | 顯示出了"."和".."開頭的檔案 |
| ls -d | 查看目錄本身的資訊 |
| ls *.txt | 查看以.txt結尾的檔案【*匹配檔案名中的任意多個字符】 |
| ls ?.txt | 查看單個字符開頭,.txt結尾的檔案【?匹配檔案名中的一個字符】 |
du
- 統計指定目錄[或檔案]所占用的磁盤空間的大小
| 指令 | 描述 |
|---|---|
| du -a | 統計磁盤空間占用時包括所有的檔案,而不僅僅只統計目錄 |
| du -h | 顯示出目錄或檔案的大小[K、M],默認的大小單位時位元組[KB] |
| du -s | 只統計每個引數所占用空間總的大小,而不是統計每個子目錄、檔案的大小 |
創建目錄和檔案
mkdir
- 創建新的空目錄
| 指令 | 描述 |
|---|---|
| mkdir -p | 一次創建多層目錄[mkdir -p a/b/c/d] |
創建多層,多個目錄時,需要注意絕對路徑和相對路徑
touch
- 創建新的空檔案[更新檔案的時間標記]
ln
- 為檔案或目錄創建連接檔案[和windows的快捷方式類似]
| 軟鏈接 | 硬鏈接 | |
|---|---|---|
| 洗掉原始檔案后 | 失效 | 仍舊可以使用 |
| 使用范圍 | 適用于檔案或目錄 | 只能用于檔案 |
| 保存位置 | 與原始檔案可以位于不同的檔案系統中 | 必須與原始檔案在一個檔案系統[linux磁區]內 |
- 軟鏈接
ln -s 源檔案或目錄 鏈接檔案或目標位置
ln -s /bin/bzip2 /bin/wx/
- 硬鏈接
ln /bin/bzip2 /bin/wx/
復制洗掉移動目錄
cp
- 將需要復制的檔案或目錄[源]重建一份,并保存為新的檔案或目錄,復制后可賦予新名稱
| 指令 | 描述 |
|---|---|
| cp -f | 覆寫目標同名檔案或目錄時不進行提醒,直接強制復制 |
| cp -i | 覆寫目標同名檔案或目錄時提醒用戶確認 |
| cp -p | 復制時保持源檔案的權限、屬主以及時間標記等屬性不變 |
| cp -r | 復制目錄時必須使用此選項,表示遞回復制所有檔案及子目錄 |
rm
- 洗掉指定的檔案或目錄
| 指令 | 描述 |
|---|---|
| rm -i | |
| rm -rf | 默認全部同意遞回洗掉檔案或目錄 |
mv
- 將指定的檔案或目錄轉移位置
- 如果目標位置與源位置相同,則相當于執行重命名操作
mv 123 1234 // 這是重命名
mv /root/123.txt /home/mpy // 這是移動
查找目錄和檔案
which
-
查找可執行命令的在哪里
-
搜索范圍由環境變數PATH決定[echo $PATH]
which 命令或程式名
which -a 命令或程式
which ls
which cd
find
-
基于某些條件查找一些檔案
-
采用遞回方式,根據目標的名稱、型別、大小等不同屬性進行精細查找
| 查找型別 | 關鍵字 | 描述 |
|---|---|---|
| 按名稱查找 | -name | 根據目標檔案的名稱進行查找,允許使用"*"及"?"通配符 |
| 按檔案大小查找 | -size | 根據目標檔案的大小進行查找 一般使用"+"、"-"號設定超過或小于指定的大小作為查找條件 常用的容量單位包括kB[注意k是小寫]、MB、GB |
| 按檔案屬主查找 | -user | 根據檔案是否屬于目標用戶進行查找 |
| 按檔案型別查找 | -type | 根據檔案的型別進行查找 問價型別包括普通檔案[f]、目錄[d]、鏈接檔案[l]、塊設備檔案[b]、字符設備檔案[c]等 塊設備是指成塊讀取資料的設備[硬碟、記憶體等] 字符設備是指按單個字符讀取資料的設備[鍵盤、滑鼠等] |
| 邏輯運算子 | 描述 |
|---|---|
| -a | 表示且and |
| -o | 表示或or |
find 查找范圍 -name 查找的檔案名
find / -name 123.txt
find / -size +1024k -a -name log.txt
檔案管理
查看和檢索檔案
cat
- 顯示出檔案的內容
| 指令 | 描述 |
|---|---|
| cat -n | 顯示內容行號 |
| cat -b | 顯示內容行號,但是不現實空行 |
more
- 全屏分頁顯示檔案內容
- 按enter向下逐行滾動
- 按空格向下翻一屏
- 按q退出
less
- 和more一樣,但擴展功能更多
- page up向上翻頁,page down向下翻頁
- 按 / 查找內容,n下一個內容,N上一個內容
- 其他功能和more類似
head
- 查看檔案的頭幾行[默認10行]
| 指令 | 描述 |
|---|---|
| head -n | n代表指定的行數 |
head -10 /etc/1.txt // 查看1.txt的前10行
tail
- 查看檔案結尾的少部分內容[默認10行]
| 指令 | 描述 |
|---|---|
| tail -n | n代表指定的行數 |
| tail -f | 動態監測檔案末行內容 |
tail -10 /etc/1.txt // 查看1.txt的最后10行
wc
- 統計檔案中單詞數量等資訊
| 指令 | 說明 |
|---|---|
| wc -l | 統計行數 |
| wc -w | 統計單詞個數 |
| wc -c | 統計位元組數 |
grep
- 在檔案中查找并顯示包含指定字串的行
| 引數 | 描述 |
|---|---|
| -i | 查找時會忽略大小寫 |
| -v | 反轉查找,輸出與查找條件不相符的行 |
查找條件設定
- 要查找的字串要用引號包裹
^表示開頭,$表示結構,^$表示空行
xargs
find / -name hosts | xargs -I {} 命令 {}
將恰面查找的結果放大后面執行,xargs會把執行結果保存到{},之后在通過后面的指令對{}中的內容進行處理
find / -name hosts | xargs -I {} cp {} / // 通過find查找hosts,之后把hosts復制到根目錄下
備份和恢復檔案
gzip
- 壓縮檔案
gzip 1.txt // 直接生成1.txt.gz
bzip2
- 壓縮檔案
bzip2 1.txt // 直接生成1.txt.bz2
gunzip
- 解壓檔案[等同于 gzip -d]
gunzip 1.txt.gz // 解壓檔案
bunzip2
- 解壓檔案[等同于bzip2 -d]
bunzip2 1.txt.bz2 // 解壓檔案
tar
- 制作歸檔檔案、釋放歸檔檔案
| 引數 | 描述 |
|---|---|
| -c | 創建.tar格式的包檔案 |
| -x | 解開.tar格式的包檔案 |
| -v | 輸出詳細資訊 |
| -f | 表示使用歸檔檔案 |
| -p | 打包時保留原始檔案及目錄的權限 |
| -t | 串列查看包內的檔案 |
| -C | 捷豹時指定釋放的目標檔案夾 |
| -z | 呼叫gzip程式進行壓碩訓解壓 |
| -j | 呼叫bzip2程式進行壓碩訓解壓 |
tar -zcvf 檔案或目錄 // 壓縮檔案
tar -zxvf .tar檔案 // 解壓檔案
vi使用
三種作業模式
命令模式 --輸入a、i、o--> 進入輸入模式 --按esc-->命令模式 --輸入:-->進入末行模式
輸入模式
a: 當前游標的下一行位置插入i: 當前游標位置插入o: 下一行的首位置插入
命令模式
游標操作
| 操作 | 描述 |
|---|---|
| :set nu | 顯示行號 |
| :set nonu | 不顯示行號 |
| #G | 跳轉到第幾行[#代表行號] |
| G | 跳轉到檔案的行尾 |
| gg | 跳轉到檔案的行首 |
洗掉操作
| 操作 | 描述 |
|---|---|
| x或Del | 洗掉游標處的單個字符 |
| dd | 洗掉當前游標所在行 |
| #dd | 洗掉從游標處開始的#行內容 |
| d^ | 洗掉當前游標之前到行首的所有字符 |
| d$ | 洗掉當前游標之后到行尾的所有字符 |
復制操作
| 操作 | 描述 |
|---|---|
| yy | 復當前整行的內容到剪貼板 |
| #yy | 復制從游標處開始復制#行內容[從游標處開始往下數#行,一起復制] |
粘貼操作
| 操作 | 描述 |
|---|---|
| P | 將緩沖區中的內容粘貼到游標位置處之后 |
| p | 粘貼到游標位置處之前 |
檔案內容查找
| 操作 | 描述 |
|---|---|
| /word | 從上而下在檔案中查找字串word |
| ?word | 從下而上在檔案中查找字串word |
| n | 定位下一個匹配到的字串 |
| N | 定位上一個匹配到的字串 |
撤銷編輯
| 操作 | 描述 |
|---|---|
| u | 按一次取消最近的操作,支持多次重復按u恢復到原來的狀態 |
| U | 取消對當前行所做的所有編輯 |
| ZZ | 保存當前檔案內容并退出 |
末行模式
:: 進入末行模式
保存退出
| 操作 | 描述 |
|---|---|
| :w | 保存修改的內容 |
| :w /root/newfile | 另存為其他內容 |
| :q | 未修改退出 |
| :q! | 放棄對檔案的修改直接退出 |
| :wq | 保存并退出 |
編輯其他檔案
| 操作 | 描述 |
|---|---|
| :e 其他檔案的絕對路徑 | 從編輯當前檔案切換到編輯其他檔案 |
| :r 其他檔案的絕對路徑 | 在當前檔案中讀取其他檔案的內容 |
| :sp 其他檔案的絕對路徑 | 分屏編輯多個檔案 |
| ctl+w后按上或下 | 分屏編輯后切換編輯物件 |
查找替換
| 操作 | 描述 |
|---|---|
| ??/old/new | 將當前行找到的第一個old字串替換為new字串 |
| ??/old/new/g | 將當前行找到的所有old字串全部替換new字串 |
| :#,#s/old/new/g | 在行號"#到#"范圍內查找old字串,全部替換為new字串 |
| :%s/old/new/g | 將整個檔案中的old字串全部替換為new字串 |
| ??/old/new/c | 對每個替換動作進行提示確認 |
linux軟體安裝
linux應用程式基礎
linux命令與程式關系
-
檔案位置
-
系統命令
一般在/bin和/sbin目錄中,或為shell內部指令
-
應用程式
通常在/usr/bin和/usr/sbin目錄中
-
-
主要用途
-
系統命令
完成對系統的基本管理作業,例如IP配置工具
-
應用程式
完成相對獨立的其他輔助任務,例如網頁瀏覽器
-
-
適用環境
-
系統命令
一般只在字符操作界面中運行
-
應用程式
根據實際需要,有些程式可在圖形界面中運行
-
-
運行格式
-
系統命令
一般包括命令字、命令選項和命令引數
-
應用程式
通常沒有固定的執行格式
-
linux目錄結構
| 檔案型別 | 保存目錄 |
|---|---|
| 普通執行程式檔案 | /usr/bin |
| 服務器執行程式檔案和管理程式檔案 | /usr/sbin |
| 應用程式組態檔 | /etc |
| 日志檔案 | /var/log |
| 應用程式文檔檔案 | /usr/share/doc |
| 應用程式手冊頁檔案 | /usr/share/man |
軟體包的封裝型別
| 封裝型別 | 說明 |
|---|---|
| rpm軟體包 | 擴展名為.rpm |
| deb軟體包 | 擴展名為.deb |
| 源代碼軟體包 | 一般為.tar.gz、.tar.bz2等格式 |
| 附帶安裝程式的軟體包 | 在壓縮包內提供install.sh、setup等安裝程式或以.bin格式的單個執行檔案 |
| 綠色免安裝的軟體包 | 在壓縮包內提供已經編譯號的執行程式檔案,解壓后打開檔案夾可直接使用 |
使用RPM包管理工具
RPM概念
- RPM Pakcage Manager
- 由Red Hat公司提出,被眾多linux發行版所采用
- 建立同意的資料庫檔案
- 詳細記錄軟體包的安裝、卸載等變化資訊
- 自動分析軟體包依賴關系
- 一般命名格式

rpm管理命令
main rpm
- 查詢、驗證RPM軟體包資訊
- 維護RPM資料庫資訊
- 安裝、升級、卸載RPM軟體包
查詢已安裝的RPM軟體包資訊
| 引數 | 描述 |
|---|---|
| -qa | 查看系統中已安裝的所有RPM軟體包串列 |
| -qi | 查看指定軟體的詳細資訊 |
| -ql | 查詢指定軟體包所安裝的目錄、檔案串列 |
| -qc | 僅顯示指定軟體包安裝的組態檔 |
| -qd | 僅顯示指定軟體包安裝的檔案檔案 |
| -qf | 查看程式是由哪個軟體包提供的[可以配合which命令] |
查詢未安裝的RPM軟體包資訊
| 引數 | 描述 |
|---|---|
| -qpi | 查看.rpm安裝包檔案查看該軟體的詳細資訊 |
| -qpl | 查看.rpm安裝包內所包含的目錄、檔案串列 |
| -qpc | 查看.rpm安裝包內所包含的組態檔串列 |
| -qpd | 查看.rpm安裝包內包含的檔案檔案串列 |
安裝和卸載RPM軟體包
| 引數 | 描述 |
|---|---|
| -i | 安裝一個新的rpm軟體包 |
| -U | 升級某個rpm軟體,若原本未裝,則進行安裝 |
| -F | 更新某個rpm軟體,若原本未裝,則放棄安裝 |
| -e | 卸載指定的RPM軟體 |
其他選項
| 引數 | 描述 |
|---|---|
| -h | 以#形式顯示安裝進度建立統一的資料庫檔案 |
| -v | 顯示安裝程序中的詳細資訊 |
| --nodeps | 忽略依賴關系,但可能導致軟體例外 |
重建RPM資料庫
| 指令 |
|---|
| rpm --rebuilddb |
| rpm -initdb |
匯入驗證公鑰
| 指令 |
|---|
| rpm --import /media/cdrom/RPM-GPG-KEY-redhat-release |
從源代碼編譯安裝程式
編譯安裝程序
-
解包
tar -zxvf 軟體包 想要解壓的路徑
-
配置
cd 解壓的路徑
./configure --prefix=安裝路徑[/usr/local/]
-
翻譯
make命令
-
安裝
make install
linux賬戶與權限
管理用戶和組賬號
用戶和組
- 用戶賬號
- 超級用戶
- 普通用戶
- 程式用戶
- 組賬號
- 基本組[私有組]
- 附加組[公共組]
- UID和GID
- UID[用戶識別符號]
- GID[組識別符號]
用戶管理
保存用戶名稱、屬主目錄、登陸shell等基本資訊的檔案位置/etc/passwd,沒一行對應一個用戶的賬號記錄


保存用戶密碼/etc/shadow,每一行對應一個用戶的密碼[檔案中的每一行內容包含九個用:隔開的配置欄位]

useradd
- 添加用戶
| 引數 | 描述 |
|---|---|
| -u | 指定UID標記號 |
| -d | 指定宿主目錄,不指定默認/home/用戶名 |
| -e | 指定賬號失效時間 |
| -g | 指定用戶的基本組名[UID號] |
| -G | 指定用戶的附加組名[GID號] |
| -M | 不為用戶建立并初始化宿主目錄 |
| -s | 指定用戶的登陸shell |
檔案來源
- 新建用戶賬號時,從
/etc/skel目錄中復制而來[也就是如果想要給每個用戶初始化檔案時,可以往這里添加]
主要的用戶初始組態檔
.bash_profile : 用戶每次登錄時執行
.bashrc : 每次進入新的bash環境時執行
.bash_logout : 用戶每次退出登錄時執行
passwd
- 修改密碼
| 引數 | 描述 |
|---|---|
| -d | 清空用戶的密碼,使之無需密碼即可登陸 |
| -l | 鎖定用戶賬號 |
| -S | 查看用戶狀態 |
| -u | 解鎖用戶賬號 |
usermod
- 修改賬號屬性
| 引數 | 描述 |
|---|---|
| -l | 更改用戶賬號登陸狀態 |
| -L | 鎖定用戶狀態 |
| -U | 解鎖用戶狀態 |
-u、-d、-e、-g、-G、-s與useradd命令含義相同
- 給用戶搬家
-
使用usermod搬家
usermod -d /test/test1 test1
-
使用mv搬家
mv /home/test1 /test/
userdel
- 洗掉用戶賬號
| 引數 | 描述 |
|---|---|
| -r | 表示連宿主的家目錄一起刪掉 |
組賬號管理
保存組賬號基本資訊/etc/group
保存組賬號的密碼資訊/etc/gshadow
tail -5 /etc/group
[root@localhost ~]# tail -5 /etc/group
docker:x:982:
admin:x:1001:
wazuh:x:981:wazuh
test1:x:1002:
test2:x:1003:

groupadd
- 單獨添加組賬號
| 引數 | 描述 |
|---|---|
| -g | 指定組的GID |
gpasswd
- 設定組賬號的密碼[極少用]、添加洗掉組用戶
| 引數 | 描述 |
|---|---|
| -a | 向組添加一個用戶 |
| -d | 從組內洗掉一個用戶 |
| -M | 重繪組成員串列,以逗號分隔 |
groupdel
- 洗掉組后,組成員除權限外,不受影響
組賬號查詢
id
- 查詢用戶標識
groups
- 查詢用戶所屬組
finger
- 查詢用戶賬號的詳細資訊
w、who、users
- 查詢已登陸到主機的用戶資訊
管理目錄和檔案屬性
目錄和檔案屬性
訪問權限
- 讀取[r] : 允許查看檔案內容、顯示目錄串列
- 寫入[w] : 允許修改檔案內容,允許在目錄中新建、移動、洗掉檔案或者子目錄
- 可執行[x] : 允許運行程式、切換目錄
歸屬[所有權]
- 屬主 : 擁有該檔案或者目錄的用戶賬號
- 屬組 : 擁有該檔案或者目錄的組賬號
[root@localhost mpy]# ll
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 下載
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 公共
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 圖片
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 檔案
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 桌面
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 模板
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 視頻
drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 音樂

chmod
- 修改檔案、目錄權限
| 引數 | 描述 |
|---|---|
| -R | 遞回修改目錄下所有檔案目錄權限 |
| u/g/o/a | 分別對應屬主、屬組、其他、所有用戶 |
| +/-/= | 分別是添加、洗掉、重繪權限 |
| r/w/x | 分別對應讀[4]、寫[2]、執行[1] |
chmod u+x /root/install.log
chmod ug-r /root/install.log
chmod ug=wr /root/install.log
chmod 744 /root/install.log
chown
- 修改所有者
| 引數 | 描述 |
|---|---|
| -R | 遞回修改目錄下所有檔案目錄歸屬 |
chown 屬主 檔案或目錄
chown :屬組 檔案或目錄
chown 屬主:屬組 檔案或目錄
檔案底層屬性
- 權限控制之上的物件底層屬性
lsattr
- 查看底層權限屬性[-代表次控制位沒有附加任何底層屬性]
[root@localhost mpy]# lsattr /etc/passwd
---------------- /etc/passwd
chattr
- 修改底層權限屬性
| 引數 | 描述 |
|---|---|
| +/-/= | 和chmod一樣的用法 |
| i | 全鎖 |
| a | 修改鎖 |
i : 全鎖
- 目錄 : 可修改已有子物件,不可建立洗掉子物件
- 檔案 : 不可洗掉、改名、追加、修改
chattr +i /etc/passwd
chattr +i /etc/shadow
之后想要添加或者修改資料都無法執行,有權限也無法執行
a : 修改鎖
- 目錄 : 可以建立修改子物件,不可以洗掉子物件
- 檔案 : 可以追加內容,不可以修改洗掉[多用于日志]
chattr +a /var/log/messages
之后只能追加資料,無法洗掉和修改
附加權限SET位
SET位權限[可以讓普通用戶執行檔案時得到最高權限]
- 為可執行的檔案設定,權限字符為's'
- 其他用戶執行該檔案時,將擁有屬主或屬組權限
SET位權限型別
- Suid : 對屬主用戶增加SET位權限
- Sgid : 對屬組內的用戶增加SET位權限
[root@localhost ~]# chmod u+s /sbin/ifconfig
[root@localhost ~]# ll /sbin/ifconfig
-rwsr-xr-x. 1 root root 81976 Aug 8 2019 /sbin/ifconfig
粘滯位
讓多個用戶在同一個設定了開放權限的目錄中可以修改屬于自己的檔案
在root權限下設定
chmod o+t /demo
- 創建賬號共享目錄
[root@localhost /]# mkdir demo
[root@localhost /]# chmod 777 demo
- 切換用戶創建目錄
[root@localhost /]# su test1
bash-4.2$ cd /demo/
bash-4.2$ mkdir test1
bash-4.2$ exit
[root@localhost /]# su test2
[test2@localhost /]$ cd /demo
[test2@localhost demo]$ mkdir test2
[test2@localhost demo]$ ls
test1 test2
- 切換目錄洗掉檔案或目錄
[root@localhost /]# su test1
bash-4.2$ ls
1.txt boot dev home lib64 mnt proc run srv test usr
bin demo etc lib media opt root sbin sys tmp var
bash-4.2$ cd demo/
bash-4.2$ ls
test1 test2
bash-4.2$ rm -rf test2
bash-4.2$ ls
test1
[root@localhost /]# su test2
[test2@localhost /]$ cd demo/
[test2@localhost demo]$ mkdir test2
[test2@localhost demo]$ exit
- 設定粘滯位
[root@localhost /]# chmod o+t /demo/
[root@localhost /]# ll
drwxrwxrwt 4 root root 32 Sep 30 02:30 demo
- 無法洗掉
[root@localhost /]# su test1
bash-4.2$ cd /demo
bash-4.2$ rm -rf test2
rm: cannot remove ‘test2’: Operation not permitted
bash-4.2$ ls
test1 test2
bash-4.2$ exit
exit
[root@localhost /]# su test2
[test2@localhost /]$ cd /demo
[test2@localhost demo]$ rm -rf test1
rm: cannot remove ‘test1’: Operation not permitted
linux網路配置
查看網路
查看網路設定
ifconfig
- 查看所有網路介面資訊
ifconfig
ifconfig 網路介面
ifconfig ens33
hostname
- 查看主機名
hostname
route
- 查看或設定路由
route [-n]
netstat
- 查看系統網路連接狀態、路由表、介面資訊等
| 引數 | 描述 |
|---|---|
| -a | 顯示所有 |
| -n | 以數字形式顯示 |
| -p | 代埠 |
| -t | tcp協議 |
| -u | udp協議 |
| -r | 路由資訊 |
netstat -anpt // 顯示tcp埠
netstat -anpu // 顯示udp埠
測驗網路連接
ping
- 測驗網路連通性
ping [選項] 目標主機
traceroute
- 測驗從當前主機到目的的主機之間經過的網路節點[路由跟蹤]
traceroute 目標主機地址
nslookup
- 測驗DNS域名決議
nslookup 目標主機地址 [DNS服務器]
設定網路
-
臨時配置 - 使用命令調增網路引數
- 簡單、快速,可直接修改運行中的網路引數
- 一般只適合在除錯網路的程序中使用
- 系統重啟以后,所做的修改將會失效
-
永久配置 - 通過組態檔修改網路引數
-
修改各項網路引數的組態檔
-
適合對服務器設定固定引數時使用
-
需要多載網路服務或者重啟以后才會生效
-
臨時配置
網路配置
- 設定網路介面的IP地址、子網掩碼
ifconfig 介面名 ip地址 [netmask 子網掩碼]
ifconfig 網路介面 ip地址[/掩碼長度]
- 禁用或者重新激活網卡
ifconfig 網路介面 up
ifconfig 網路介面 down
- 設定虛擬網路介面
ifocnfig 介面名:序號 ip地址
ifconfig ens1:1 10.1.1.1
設定路由
- 添加到指定網段的路由記錄
route add -net 網段地址 gw ip地址
- 洗掉到指定網段的路由記錄
route del -net 網段地址
- 洗掉路由表中的默認網關記錄
route del default gw ip地址
- 向路由表中添加默認網關記錄
route add default gw ip地址
route add default gw 192.168.1.1
route add -net 0.0.0.0 gw 192.168.1.1
修改主機名
hostname 主機名
hostname mpy
bash // 重繪bash后生效,重啟后失效
永久配置
網路配置
網路介面組態檔/etc/sysconfig/network-scripts/ifcfg-ens33[第一塊以太網卡的組態檔]
vim /etc/sysconfig/network-scripts/ifcfg-ens33
// 修改配置
BOOTPROTO=dhcp // 換成static靜態獲取
UUID=c10e5d41-4157-4f3b-b6a0-41e58843f972 // 前面加上'#'
ONBOOT=no // 改成yes
// 加上配置資訊
IPADDR=ip地址
NETMASK=255.255.255.0
GATEWAY=網關地址
DNS1=DNS地址[8.8.8.8]
DNS2=DNS地址[114.114.114.114]
// 重啟服務
systemctl restart network
修改主機名
主機名組態檔/etc/hostname
[root@mpy ~]# cat /etc/hostname
mpy.localhost
DNS配置
DNS組態檔/etc/resolv.conf
[root@mpy ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
hosts配置
hosts[本地主機映射檔案]組態檔在/etc/hosts
- 保存主機名與IP地址的映射記錄
[root@mpy ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 默認情況下,系統首先從hosts檔案查找決議記錄
- hosts檔案只對當前的主機有效
- hosts檔案可以減少DNS查詢程序,從而加快訪問速度
DHCP服務
為大量客戶機自動分配地址,提供集中管理減輕管理和維護成本、提高網路配置效率
包括網卡IP地址、子網掩碼、對應的網路地址、廣播地址、默認網關、DNS服務器
DHCP原理

DHCP主要檔案
主組態檔 : /etc/dhcp/dhcp.conf
執行程式 : /user/sbin/dhcpd、/usr/sbin/dhcrelay
執行引數配置 : /etc/sysconfig/dhcpd
- dhcpd.conf構成[全域配置引數、網段宣告、配置選項、配置引數、主機宣告]
- 全域設定,作用于整個DHCP服務器
ddns-update-style none;
default-lease-time 21600;
max-lease-time 43200;
option domain-name "domain.org"
option domain-name-servers 202.106.0.20
- Subnet網段宣告,作用于整個子網段
range引數 : 設定用于分配ip地址池
option subnet-mask引數 : 設定客戶機的子網掩碼
option routes引數 : 設定客戶機默認網關
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option routes 192.168.1.1;
}
- host主機宣告,靜態分配
- hardware ethernet引數 : 指定對應主機的MAC地址
- fixed-address引數 : 指定為該主機保留的IP地址
host prtsvr{
hardware ethernet 00:0c:29:7a:c3:27;
fixed-address 192.168.1.101;
}
安裝DHCP服務
- 確保鏡像檔案可以使用

- 可以重新掛載路徑
mount | grep CentOS
umount /dev/sr0
mount /dev/sr0 /media/
- 找到dhcp軟體
cd /media/Packages
ls | grep dhcp
- 安裝軟體
rpm -ivh dhcp-4.2.5-68.el7.centos.x86_64.rpm
配置DHCP服務器
- 修改組態檔
vim /etc/dhcp/dhcpd.conf
- 在末行模式下匯入樣板檔案
:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
- 在52行進行修改


subnet 192.168.226.0 netmask 255.255.255.0 { // 宣告網段
range 192.168.226.200 192.168.226.211; // 地址池
option domain-name-servers 114.114.114.114,8.8.8.8; // DNS
option domain-name "internal.example.org";
option routers 192.168.226.254; // 默認網關
option broadcast-address 192.168.226.255; // 網段廣播
default-lease-time 600;
max-lease-time 7200;
}
- 開啟DHCP服務
systemctl start dhcpd
搭建DHCP環境
- centos7網路配置


- windows測驗機器

- 查看新網卡
[root@localhost mpy]# ip a sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:7a:c6:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.50.131/24 brd 192.168.50.255 scope global noprefixroute dynamic ens33
valid_lft 1723sec preferred_lft 1723sec
inet6 fe80::610:331e:d510:b244/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:7a:c6:32 brd ff:ff:ff:ff:ff:ff
inet6 fe80::690a:d735:4240:f806/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 配置新網卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
cd /etc/sysconfig/network-scripts
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens36"
#UUID="c10e5d41-4157-4f3b-b6a0-41e58843f972"
DEVICE="ens36"
ONBOOT="yes"
ZONE=public
IPADDR="192.168.12.5"
NETMASK="255.255.255.0"
GATEWAY="192.168.12.1"
- 啟動新網卡[ens36]
ifup ens36
- 配置DHCP組態檔
- 這里的IP資訊和上面網卡的資訊要對應
subnet 192.168.12.0 netmask 255.255.255.0 {
range 192.168.12.100 192.168.12.150;
option domain-name-servers 114.114.114.114,8.8.8.8;
option domain-name "internal.example.org";
option routers 192.168.12.1;
option broadcast-address 192.168.12.255;
default-lease-time 600;
max-lease-time 7200;
}
- windows機器重新獲取ip
ipconfig /flushdns
ipconfig /renew
DNS服務
作用和型別
作用
- 正向決議 : 根據主機名稱[域名]查找對應的IP地址
- 反向決議 : 根據IP地址查找對應的主機域名
型別
- 快取域名服務器
- 也稱為高速快取服務器
- 通過向其他域名服務器查詢獲得域名->IP地址記錄
- 將域名查詢結果快取到本地,提高重復查詢時的速度
- 主域名服務器
- 特定DNS區域的官方服務器,具有唯一性
- 負責維護該區域內所有域名->IP地址的映射記錄
- 從域名服務器
- 也稱為輔助域名服務器
- 其維護的域名->IP地址記錄來源于主域名服務器
查詢流程
hosts --> 快取 --> 首選DNS --> 迭代查詢[根域名->頂級域名->二級域名……]--> 回傳結果
安裝檔案和組態檔
安裝檔案
bind-9.9.4-61.el7.x86_64.rpm : 安裝檔案
bind-utils-9.9.4-61.el7.x86_64.rpm : 工具包
bind-libs-9.9.4-61.el7.x86_64.rpm : 運行庫
bind-chroot-9.9.4-61.el7.x86_64.rpm : 偽裝目錄
組態檔
- 全域TTL配置及SOA記錄
- $TTL[Time To Live生存時間]記錄
- SOA[Start Of Authority授權資訊開始]記錄
- 分號';'開始的部分表示注釋資訊
- 正向域名決議記錄
- NS域名服務器[Name Server]記錄【指該域名區域中,有哪些服務器負責決議這個域名】
- MX郵件交換[Mail Exchange]記錄【】
- A地址[Address]記錄,只用在正向決議區域中
- CNAME別名[Canonical Name]記錄
- 反向域名決議記錄
- PTR指標[Point]記錄,只用在反向決議區域中
- 記錄的第一列指定IP地址中的主機地址部分即可
搭建DNS服務器
- 兩臺centos7服務器,主DNS192.168.12.5,從DNS192.168.12.104
安裝
配置兩個正向決議[chaitin.com | alibaba.com]和一個反向決議[192.168.50.131 -> bj.pdns.com]
- 在光碟中找到軟體
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
- 復制檔案修改權限
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var/
cp -rp /var/named/dynamic/ /var/named/chroot/var/named/
chown -R :named /var/named/chroot/var/named/
chown -R named /var/named/chroot/var/named/data/
chown -R named /var/named/chroot/var/named/slaves/
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 修改組態檔
vim /var/named/chroot/etc/named.conf // 主組態檔

vim /var/named/chroot/etc/named.rfc1912.zones // 宣告DNS區域的檔案


- 生成對應域名的資料檔案
cd /var/named/chroot/var/named/
[root@localhost etc]# cd /var/named/chroot/var/named/
[root@localhost named]# ls
data dynamic my.external.zone.db my.internal.zone.db named.ca named.empty named.localhost named.loopback slaves
- 復制正向決議模版[named.localhost]
cp -p named.localhost chaitin.com.zone
cp -p named.localhost alibaba.com.zone
- 復制反向決議模版[named.loopback]
cp -p named.loopback 50.168.192.in.zone
vim chaitin.com.zone


- 正向配置

- 反向配置

- 運行named
systemctl start named
- 復制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 運行named-chroot
systemctl start named-chroot
- 解決報錯
[root@localhost named]# systemctl start named-chroot.service
Job for named-chroot.service failed because the control process exited with error code. See "systemctl status named-chroot.service" and "journalctl -xe" for details.
[root@localhost named]# systemctl status named-chroot.service
● named-chroot.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2022-10-06 06:30:30 PDT; 7s ago
Process: 83547 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=1/FAILURE)
Process: 83544 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Oct 06 06:30:30 localhost named[83549]: couldn't add command channel 127.0.0.1#953: address in use
Oct 06 06:30:30 localhost named[83549]: couldn't add command channel ::1#953: address in use
Oct 06 06:30:30 localhost named[83549]: isc_stdio_open 'data/named.run' failed: permission denied
Oct 06 06:30:30 localhost named[83549]: configuring logging: permission denied
Oct 06 06:30:30 localhost named[83549]: loading configuration: permission denied
Oct 06 06:30:30 localhost named[83549]: exiting (due to fatal error)
Oct 06 06:30:30 localhost systemd[1]: named-chroot.service: control process exited, code=exited status=1
Oct 06 06:30:30 localhost systemd[1]: Failed to start Berkeley Internet Name Domain (DNS).
Oct 06 06:30:30 localhost systemd[1]: Unit named-chroot.service entered failed state.
Oct 06 06:30:30 localhost systemd[1]: named-chroot.service failed.
[root@localhost named]# systemctl start named-chroot
Job for named-chroot.service failed because the control process exited with error code. See "systemctl status named-chroot.service" and "journalctl -xe" for details.
[root@localhost named]# journalctl -xe
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit named-chroot-setup.service has begun shutting down.
Oct 06 06:31:52 localhost polkitd[601]: Unregistered Authentication Agent for unix-process:83757:1812767 (system bus name
Oct 06 06:31:52 localhost systemd[1]: Stopped Set-up/destroy chroot environment for named (DNS).
-- Subject: Unit named-chroot-setup.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit named-chroot-setup.service has finished shutting down.
Oct 06 06:31:52 localhost dbus[581]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'
Oct 06 06:31:53 localhost setroubleshoot[83811]: SELinux is preventing /usr/sbin/named from append access on the file nam
Oct 06 06:31:53 localhost python[83811]: SELinux is preventing /usr/sbin/named from append access on the file named.run.
***** Plugin catchall_boolean (89.3 confidence) suggests ******************
If you want to allow named to write master zones
Then you must tell SELinux about this by enabling the 'named_write_master_zones'
Do
setsebool -P named_write_master_zones 1
***** Plugin catchall (11.6 confidence) suggests **************************
If you believe that named should be allowed append access on the named.run file
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'named' --raw | audit2allow -M my-named
# semodule -i my-named.pp
[root@localhost named]# ausearch -c 'named' --raw | audit2allow -M my-named
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i my-named.pp
[root@localhost named]# semodule -i my-named.pp
根據提示運行下面兩行代碼
ausearch -c 'named' --raw | audit2allow -M my-named
semodule -i my-named.pp
- 設定windows機器IP

- 關閉centos防火墻
systemctl stop firewalld
iptables -F
- windows機器進行測驗
C:\Users\Administrator>nslookup
默認服務器: bj.pdns.com
Address: 192.168.12.5
> www.alibaba.com
服務器: bj.pdns.com
Address: 192.168.12.5
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
名稱: www.alibaba.com
Address: 129.168.226.141
> www.chaitin.com
服務器: bj.pdns.com
Address: 192.168.12.5
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
名稱: www.chaitin.com
Address: 192.168.226.141
搭建從域名服務器
- 區域傳送
- 在光碟中找到軟體
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
- 復制檔案修改權限
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var/
cp -rp /var/named/dynamic/ /var/named/chroot/var/named/
chown -R :named /var/named/chroot/var/named/
chown -R named /var/named/chroot/var/named/data/
chown -R named:named /var/named/chroot/var/named/slaves/
chmod -R 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 修改組態檔
- 在客戶端配置
vim /var/named/chroot/etc/named.conf // 主組態檔
vim /var/named/chroot/etc/named.rfc1912.zones
zone "alibaba.com" IN {
type slave;
file "slaves/alibaba.com.zone d";
masters { 192.168.12.5; };
};
- 在服務器段配置
vim /var/named/chroot/etc/named.rfc192.zones
zone "alibaba.com" IN {
type master;
file "alibaba.com.zone";
allow-update { 192.168.12.101; }; // 這里改成客戶端的IP
;
- 客戶機設定DNS
vim /etc/resolv.conf
nameserver 192.168.12.5
- 確保可以ping通
- 例外處理
dumping master file: slaves/tmp-dt1dKHtvrc: open: permission denied
- 權限不夠
chown -R named:named /var/named/chroot/var/named/slaves/
- 啟動服務[遇到例外,和上面的DNS報錯處理方法一樣]
systemctl start named-chroot
vim /var/named/chroot/var/named/slaves/alibaba.com.zone

遠程訪問及控制
SSH遠程管理
OpenSSH服務端
ssh協議
- 為客戶機提供安全的shell環境,用于遠程管理
- 默認埠 : TCP 22
OpenSSH
- 服務名稱 : sshd
- 服務端主程式 : /usr/sbin/sshd
- 服務端組態檔 : /etc/ssh/sshd_config
服務監聽選項
- 埠號、協議版本、監聽IP地址
- 禁止反向決議
用戶登陸控制
- 禁止root用戶、空密碼用戶
- 登陸時間、重試次數
- AllowUsers、DenyUsers
默認的鏈接命令
- ssh [遠程安全登陸]
ssh user@host -p 22
- scp [遠程安全復制]
scp user@host:file1 file2 // 把服務器的檔案拷貝到本地,file1表示服務器檔案路徑,file2表示本機檔案存放路徑
scp file1 user@host:file2 // 把本地檔案拷貝到服務器中,file1表示本機檔案存放路徑,file2表示服務器檔案路徑
OpenSSH客戶端
- xhell
- mobaxterm
密鑰對驗證的SSH體系
實作程序
- 創建密鑰對
Linux使用ssh-keygen命令
可用的加密演算法 : RSA或DSA
-
密鑰檔案 : id_rsa
-
公鑰檔案 : id_rsa.pub
- 上傳公鑰檔案id_rsa.pub
任何方式均可[共享、FTP、Email、SCP……]或者命令匯入ssh-copy-id -i 本地公鑰檔案位置 user@host
- 匯入公鑰資訊
將公鑰文本添加至目標用戶的公鑰庫或者命令匯入ssh-copy-id -i 本地公鑰檔案位置 user@host
公鑰檔案 : ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
- 使用密鑰對驗證方式
驗證用戶 : 服務端的用戶lisi
驗證密碼 : 客戶端的用戶zhangsan的私鑰短語
vim /etc/ssh/sshd_config
將PubkeyAuthentication yes前面的注釋去掉,將公鑰認證開啟
將PasswordAuthentication yes改成no,將密碼認證關掉
TCP Wrappers
linux中的一個外掛程式
概述
保護機制的實作
- 通過tcpd主程式對其他服務程式進行包裝
- 由其他服務程式呼叫libwrap.so.*鏈接庫
訪問策略
- 訪問控制策略的組態檔
/etc/hosts.allow
/etc/hosts.deny
- 設定訪問控制策略
- 策略格式【服務串列:客戶機地址串列】
- 服務串列【多個服務以逗號分隔,ALL表示所有服務】
- 客戶機地址串列
- 多個地址以逗號分隔,ALL表示所有地址
- 允許使用通配符?和*
- 網段地址,如192.168.1.或者192.168.1.0/255.255.255.0
- 區域地址,如.benet.com
vim /etc/hosts.allow
sshd:192.168.12.100
vim /etc/hosts.deny
sshd:all
linux檔案傳輸服務
SAMBA服務
-
SMB協議
服務訊息塊
-
CIFS協議
通用互聯網檔案系統
-
Samba協議
smbd : 提供對服務器中檔案、列印資源的共享訪問[TCP139、445]
nmdb : 提供基于NetBIOS主機名的決議[UDP137、138]
配置目錄
/etc/samba/etc/samba/smb.conf
組態檔檢查工具
- testparm
配置資訊
配置選項
/etc/samba/smb.conf
- [global] : 全域設定
- [homes] : 用戶目錄共享設定
- [printers] : 列印機共享設定
- [myshare] : 自定義名稱的共享目錄設定
全域配置項
- workgroup : 所在作業組名稱
- server string : 服務器描述資訊
- security : 安全級別,可用值[shell、user、server、domain]
- log file : 日志檔案位置,"%m"變數表示客戶機地址
- passwd backend : 設定共享賬戶檔案的型別
共享目錄配置項
- comment : 對共享目錄的注釋、說明資訊
- path : 共享目錄在服務器中對應的實際路徑
- browseable : 該共享目錄在網上鄰居中是否可見
- guestok : 是否允許所有人訪問,等效于"public"
- writable : 是否可寫,與read only的作用相反
- read only : 是否可讀
- write list : 是否可寫
- valid users : 允許哪些用戶或組可讀【valid users=admin,@manager // admin表示用戶,@manager表示manager組】
- directory mask : 默認上傳目錄權限[0666]
- create mask : 默認上傳檔案權限[0777]
輔助配置內容
-
注釋行 : 以#開頭的行
-
配置樣例行 : 以;開頭的行
-
結合grep命令可以提取有效配置行
cat /etc/samba/smb.conf.example | grep -v "^#" smb.conf | grep -v "^;" | grep -v ^$
用戶訪問的samba
- 建立samba用戶資料庫檔案
/var/lib/samba/private/passdb.tdb
- 設定上傳目錄及權限
mkdir -m 777 /upload
vim /etc/samba/smb.conf
directory mask = 0755 // 默認上傳目錄權限
create mask = 0644 // 默認上傳檔案權限
[upload]
? comment=upload
? path=/upload
? public=yes
? read only=yes // 所有人可以讀
? write list=admin // admin用戶可寫
- 共享賬號映射[別名]
vim /etc/samba/smbusers
添加以下資訊
zhangsan = zs
root = administrator
- 啟用別名
vim /etc/samba/smb.conf
在[global]中添加或修改
username map = /etc/samba/smbusers
- 重啟服務
systemctl restart smb nmb
設定用戶訪問授權
- 新建共享目錄與共享用戶
- 修改smb.conf組態檔,添加名為tools的共享目錄
- 重新加載smb.conf檔案、或重啟smb服務
確定用戶訪問權限
- 設定目錄權限
- 設定上傳檔案和目錄的默認權限
訪問地址限制
- 一般用在全域配置[global]部分
- hosts allow配置項 : 僅允許特定的客戶機
- hosts deny 配置項 : 僅拒絕特定的客戶機
- 客戶機地址表示形式
- 以空格分隔多個地址
- 主機名或IP地址,例如 : 192.168.12.101或者prtsvr
- 網路地址,例如 : 173.17.或者173.17.0.0/255/255/0/0
vim /etc/samba/smb.conf
[global]
hosts allow = 192.168.4. 173.17.
搭建檔案共享服務器
https://odinxu.com/post/windows-access-centos-samba/
- 重新掛載鏡像檔案
mount | grep CentOS
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
- 安裝主程式
rpm -ivh samba-4.7.1-6.el7.x86_64.rpm
或者 yum install -y samba【缺少依賴時使用】
- 建立samba用戶資料庫檔案
useradd zhangsan
pdbedit -a -u zhangsan // 將系統用戶添加為samba用戶
pdbedit -L // 查看samba用戶
pdbedit -vL // 查看所有的samba用戶
-
關閉防火墻、SELINUX
systemctl stop firewalld
setenforce 0
-
windows的cmd輸入
\\192.168.12.5輸入賬號密碼登陸
訪問共享檔案夾
window
cmd下輸入\\samba服務器IP
linux
smbclient命令,查看及登陸使用共享
smbclient -U 用戶名 -L IP地址
smbclient -U 用戶名 //IP地址/目錄
- 掛載共享檔案
mkdir /media/smbdir
mount -t cifs -o username=用戶名 //IP地址/目錄 /media/smbdir
mount -t cifs -o username=zs //192.168.12.5/zhangsan /media/smbdir
-
要使用有權限的賬戶root,不然可能會報錯
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
案例
| share目錄 | manager目錄 | ||
|---|---|---|---|
| 管理員 | admin | 讀寫 | 讀寫 |
| 經理 | manager組 | 只讀 | 只讀 |
| 用戶 | zhangsan | 只讀 | 無 |
創建共享目錄 : share、manager
mkdir share
mkdir manager
創建訪問用戶 : admin、zhangsan、jingli1、jingli2
useradd admin、zhangsan、jingli1、jingli2
pdbedit -u -a admin、zhangsan、jingli1、jingli2
創建訪問組 : manager
groupadd -g 1500 manager
權限需求1 : share可以被所有人訪問下載,但是只有admin可以上傳
chmod 777 /share/ /manager/
權限需求2 : manager只有屬于manager組的用戶和admin可以訪問下載,其他無權[admin還可以上傳]
- 修改所有人可以讀,admin用戶可讀可寫
vim /etc/samba/amb.config
[tongzhi]
comment=yuangongxinxi
path=/share
public=yes
read only=yes // 所有人可以讀
write list=admin // admin用戶可寫
[manager]
comment=manager
path=/manager
public=yes
read only=yes // 所有人可讀
write list=admin // admin用戶可寫
- 修改其他用戶[zhangsan]無法讀取manager目錄
vim /etc/samba/amb.config
[manager]
comment=manager
path=/manager
public=no
read only=yes // 所有人可讀
valid users=admin,@manager // admin表示用戶,@manager表示manager組
write list=admin // admin用戶可寫
YUM服務
部署YUM軟體倉
指定軟體倉庫
- 使用本地【基于光碟】
/etc/yum.repos.d/*
- 重新掛載光碟
umount /dev/sr0
mount /dev/sr0 /media
- 移動源檔案
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
- 指定源
vim /etc/yum.repos.d/test.repo
[local-yum]
name = local-yum
baseurl = file:///media/
enabled=1
gpgcheck=0
- 清除yum快取,重新生成
yum clean all
yum list
- 安裝軟體
yum install -y 軟體
yum install -y vsftpd
服務器安裝源
-
服務器端設定[1. 修改掛載點,將目錄設定為ftp共享目錄 2. 直接將掛載點設定為默認的/var/ftp/]
-
重新掛載光碟
umount /dev/sr0
mount /dev/sr0 /media/
-
設定好ftp服務[允許匿名訪問,修改他的默認共享路徑為/media]
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES // 開啟匿名訪問
local_enable=NO // 關閉本地用戶
write_enable=YES // 開放服務器寫的權限
anon_umask=022
anon_upload_enable=YES // 允許匿名上傳
anon_mkdir_write_enable=YES // 允許匿名用戶創建目錄
anon_other_write_enable=YES // 開放其他寫入權
anon_root=/media // 設定共享路徑
dirmessage_enable=YES
-
ftp://IP地址可以訪問后即可
-
-
客戶端設定
-
保存原來的源
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
-
新建源
vim yum-ftp.repo
[yum-ftp]
name=yum-ftp
baseurl=ftp://IP地址
enable=1
gpgcheck=0
-
清除原來的源快取
yum clean all
-
更新源
yum list
-
網路安裝源
FTP服務
FTP概述
控制連接 : TCP21,用于發送FTP命令資訊
資料連接 : TCP20,用于上傳、下載資料
-
資料連接的建立型別
- 主動模式 : 服務端從20埠主動向客戶端發起連接
- 被動模式 : 服務端在指定范圍內某個埠被動等待客戶連接
-
FTP傳輸模式
- 文本模式 : ASCII模式,以文本序列傳輸資料
- 二進制模式 : Binary模式,以二進制序列傳輸資料
-
FTP型別
- 匿名用戶、本地用戶、虛擬用戶
-
常見的FTP服務器程式
- IIS、Serv-U
- wu-ftpd、Proftpd
- vsfftp[Very Secure FTP Daemon]
-
常見的FTP客戶端程式
- ftp命令
- CuteFTP、FlashFXP、LeapFTP、Filezila
- gftp、kuftp
vsftp概述
主程式 : /usr/sbin/vsftpd
服務名 : vsftpd
用戶控制串列檔案
/etc/vsftpd/ftpusers: 黑名單,出現的用戶禁止登陸/etc/vsftpd/user_list: 用戶串列
主組態檔
/etc/vsftpd/vsftpd.conf
全域配置項
listen=YES : 是否獨立運行的方式監聽服務
listen_address=192.168.12.1 : 設定監聽的IP地址
listen_port : 設定監聽FTP服務的埠
write_enable=YES : 是否啟用寫入權限
download_enable=YES : 是否允許下載檔案
userlist_enable=YES : 是否啟用user_list串列檔案
userlist_deny=YES : 是否禁用user_list中的用戶
max_clients=0 : 限制并發客戶端連接屬
max_per_ip=0 : 限制同一IP地址的并發連接數
匿名FTP配置項
anonymous_enable=YES : 啟用匿名訪問
anon_umask=022 : 匿名用戶上傳檔案的權限掩碼
- 檔案默認是666,這里的022表示的是反碼[666-022=644的權限]
- 目錄默認是777[777-022=755的權限]
anon_root=/var/ftp : 匿名用戶的FTP根目錄
anon_upload_enable=YES : 允許上傳檔案
anon_mkdir_write_enable=YES : 允許創建目錄
anon_other_write_enable=YES : 開放其他寫入權
anon_max_rate=0 : 限制最大傳輸速率[位元組/秒]
本地用戶FTP配置項
local_enable=YES : 是否啟用本地系統用戶
local_umask=022 : 本地用戶上傳檔案的權限掩碼
chroot_local_user=YES : 是否將用戶禁錮在主目錄
local_max_rate=0 : 限制最大傳輸速率[位元組/秒]
-
vsftp支持tcp_wrappers的訪問控制
- tcp_wrappers=YES
vim /etc/hosts.allow vsftpd:192.168.12.100 vim /etc/hosts.deny vsftpd:all
基于系統服務的FTP
匿名訪問FTP服務
-
準備匿名FTP訪問的目錄[使匿名FTP對該目錄有寫入權限]
chown ftp /var/ftp/pub/ -
開放匿名用戶配置并啟動vsftpd服務
vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES // 開啟匿名訪問 local_enable=NO // 關閉本地用戶 write_enable=YES // 開放服務器寫的權限 anon_umask=022 anon_upload_enable=YES // 允許匿名上傳 anon_mkdir_write_enable=YES // 允許匿名用戶創建目錄 anon_other_write_enable=YES // 開放其他寫入權 dirmessage_enable=YES -
測驗匿名FTP服務器
輸入
ftp://IP地址
用戶驗證的FTP服務
-
基本的本地用戶驗證[存在密碼的用戶才可以登陸]
- ftp://IP登陸進去后的根目錄右鍵選擇登陸

- 選擇存在密碼的賬號或者
passwd 用戶名設定密碼即可

-
使用user_list用戶串列檔案
vim /etc/vsftpd/user_list
// 添加允許登陸的用戶
zhangsan // 系統用戶
ftp // ftp匿名用戶
anonymous // windows匿名用戶
vim /etc/vsftpd/vsftpd.conf
設定userlist_enable=YES
設定userlist_deny=NO
linux網站服務
Apache
Apache服務基礎
Apache簡介
主要特點
- 開放源代碼、跨平臺應用
- 支持多種網頁編程語言
- 模塊化設計、運行穩定、良好的安全性
軟體版本
1.X
- 目前最高版本是1.3,運行穩定
- 向下兼容性較好,但缺乏一些較新的功能
2.X
- 具有更多的功能特性
- 與1.X相比,配置管理風格存在較大差異
主要目錄和檔案
服務目錄 : /usr/local/httpd
主組態檔 : /usr/local/httpd/conf/httpd.conf
網頁目錄 : /usr/local/httpd/htdocs/
服務腳本 : /usr/local/httpd/bin/apachectl
執行程式 : /usr/local/httpd/bin/httpd
訪問日志 : /usr/local/httpd/log/access_log
錯誤日志 : /usr/local/httpd/log/error_log
安裝httpd服務器
- 安裝檔案[httpd-2.4.54]
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
- 如果缺什么環境直接yum安裝
yum install -y apr*
yum install -y pcre*
- 編譯
make && make install
- 啟動服務
/usr/local/httpd/bin/apachectl start
netstat -anpt | grep 80
- 修改組態檔
vim /usr/local/httpd/conf/httpd.conf
找到ServerName,將注釋去掉
- 設定系統服務啟動
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
啟動方法為 : service restart httpd
http服務器基礎
-
虛擬web主機
在同一臺服務器中運行多個web站點,其中每一個站點并不獨立占用一臺真正的計算機
-
http支持的虛擬主機
- 基于域名的虛擬主機
- 基于IP地址的虛擬主機
- 基于埠的虛擬主機
web站點部署
- 創建測驗站點
mkdir -p /var/www/html
mkdir /var/www/html/mpya /var/www/html/mpyb
- 創建測驗網頁
vim /var/www/html/mpya/index.html
<h1>mpya</h1>vim /var/www/html/mpyb/index.html
<h1>mpya</h1>
- 修改虛擬主機檔案
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpya"
ServerName www.mpya.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/mpya.com-error_log"
CustomLog "logs/mpya-access_log" common
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpyb"
ServerName www.mpyb.com
ErrorLog "logs/mpyb-error_log"
CustomLog "logs/mpyb-access_log" common
- 配置DNS
vim /var/named/chroot/etc/named.rfc1912.zones
zone "mpya.com" IN {
type master;
file "mpya.com.zone";
allow-update { none; };
};
zone "mpyb.com" IN {
type master;
file "mpyb.com.zone";
allow-update { none; };
};
cd /var/named/chroot/var/named
cp -p alibaba.com.zone mpya.com.zone
cp -p alibaba.com.zone mpyb.com.zone
vim mpya.com.zone
$TTL 1D
@ IN SOA mpya.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpya.com.
ns1 IN A 192.168.12.5
www IN A 192.168.12.5
vim mpyb.com.zone
$TTL 1D
@ IN SOA mpyb.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpyb.com.
ns1 IN A 192.168.12.5
www IN A 192.168.12.5
systemctl restart named-chroot
- 修改主組態檔,開啟vhosts的模塊
vim /usr/local/httpd/conf/httpd.conf
將注釋去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]
- 重啟服務
/usr/local/httpd/bin/apachectl restart
- 給目錄添加授權
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html">
require all granted
- 重啟服務
/usr/local/httpd/conf/extra/httpd-vhosts.conf
- 訪問站點[修改DNS為192.168.12.5]

awstats
tar -zxvf awstats-7.3.tar.gz
cp -r awstats-7.3 /usr/local/awstats
cd /usr/local/awstats
chmod +x awstats_*
配置 : awstats_configure.pl
重繪 : awstats_updateall.pl
- 使用組態檔
./awstats_configure.pl
第一個問的是apache配置路徑
/usr/local/httpd/conf/httpd.conf,之后一直y第二個問的是要監視的站點名
www.mpya.com,之后回車即可
這只是監視了一個站點,還有一個mpyb.com,同樣的操作
- 查看生成的組態檔
ls /etc/awstats
- 更改日志組態檔
ls /usr/local/httpd/logs
vim /etc/awstats/awstats.www.mpya.com.conf
LogFile="/usr/local/httpd/logs/mpya-access_log"
vim /etc/awstats/awstats.www.mpyb.com.conf
LogFile="/usr/local/httpd/logs/mpyb-access_log"
- 創建awstats使用的資料庫目錄
mkdir /var/lib/awstats
- 重繪資料
./awstats_updateall.pl now
- 測驗訪問
http://www.mpya.com/awstats/awstats.pl?config=www.mpya.com
- 給權限
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all </Directory>上面的配置[因為版本是2.x語法改變,但是這里沒改]改成
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None require all granted </Directory>
- 開啟CGI
vim /usr/local/httpd/conf/httpd.conf
LoadModule cgid_module modules/mod_cgid.so前面的注釋去掉
- 安裝perl
yum install -y perl*
- 重啟訪問
/usr/local/httpd/bin/apachectl restart
http://www.mpya.com/awstats/awstats.pl?config=www.mpya.com
-
限制訪問源IP
- 白名單寫法
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None require ip 192.168.12.100 // 改成訪問IP或者網段192.168.12 </Directory>- 黑名單寫法
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> require all granted require not ip 192.168.12.100 </RequireAll> </Directory>- 用戶認證訪問
/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/.mpyapwd zhangsan // 第一次添加需要添加-c引數
/usr/local/httpd/bin/htpasswd /usr/local/httpd/.mpyapwd lisi
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> require all granted AuthName "welcome" AuthType Basic AuthUserFile /usr/local/httpd/.mpyapwd require valid-user </RequireAll> </Directory> -
區域認證[A網站正常訪問,B網站需要授權]
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html"> <Require> require all granted </Require> </Directory> <Directory "/var/www/html/mpyb"> <Require> require all granted AuthName "Welcome" AuthType Basic AuthUserFile /usr/local/httpd/.mpyapwd require valid-user </Require> </Directory>
Nginx
Tomcat
squid代理服務器
開啟路由轉發功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
重繪配置
sysctl -p
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-nuderscore --enable-gnuregex
[root@localhost ~]# tar zxvf squid-3.4.6.tar.gz -C /opt ###解壓軟體包
[root@localhost ~]#cd /opt/
[root@opt~]#cd squid-3.4.6/
[root@opt~]#yum -y install gcc gcc-c++ make ##下載編譯器
[root@squid squid-3.4.6]# ./configure \
--prefix=/usr/local/squid \ ###安裝目錄
--sysconfdir=/etc \ ###配置位置存在目錄
--enable-arp-acl \ ###啟用acl訪問控制串列
--enable-linux-netfilter \ ###內核過濾
--enable-linux-tproxy \ ###支持透明代理
--enable-async-io=100 \ ###io的優化
--enable-err-language="Simplify_Chinese" \ ##支持語言,報錯提示簡體中文
--enable-underscore \ ##url支持下劃線
--enable-poll \ ###一個函式 字符設備驅動函式
--enable-gnuregex ##支持正則運算式
編譯
make
make install
創建用戶
useradd -M -s/sbin/nologin squid
給權限
chown -R squid:squid /usr/local/squid
chmod -R 777 /usr/local/squid/var/
啟動服務
/usr/local/squid/sbin/squid
配置
vim /etc/squid.conf
reply_body_max_size 10 MB
http_access allow all
重啟服務
killall -9 squid
/usr/local/squid/sbin/squid
設定透明代理
vim /etc/squid.conf
http_port 192.168.12.1:3128 transparent // 修改為內網IP
killall -9 squid
/usr/local/squid/sbin/sqiud
systemctl start firewalld
iptables -F
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
// 往nat表中的PREROUTING鏈中添加從ens33網卡來的源IP地址為192.168.12.0網段的并且目標埠是80要重定向埠到3128
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
shell腳本
腳本基礎語法
基礎語法
shell的作用 -- 命令解釋器,介于系統內核和用戶之間,負責解釋命令列
腳本構成
- 腳本宣告[#!/bin/bash]
- 注釋資訊[#注釋資訊]
- 可執行陳述句
#!/bin/bash
#查看電腦網路資訊
echo -e '\033[32m IP \033[0m'
sleep 1
ifconfig | grep inet | grep -v inet6 | awk '{print $2}'
echo -e '\033[31m NETMASK \033[0m'
sleep 1
ifconfig | grep inet | grep -v inet6 | awk '{print $4}'
echo -e '\033[31m GATEWAY \033[0m'
sleep 1
route -n | grep UG | awk '{print $2}'
互動式硬體設備
- 標準輸入 : 從該設備接受用戶輸入的資料
- 標準輸出 : 通過該設備向用戶輸出資料
- 標準錯誤 : 通過該設備報告執行出錯資訊
| 型別 | 設備檔案 | 檔案描述編號 | 默認設備 |
|---|---|---|---|
| 標準輸入 | /dev/stdin | 0 "<" | 鍵盤 |
| 標準輸出 | /dev/stdout | 1 ">" | 顯示幕 |
| 標準錯誤輸出 | /dev/stderr | 2 | 顯示幕 |
重定向操作
| 型別 | 運算子 | 用途 |
|---|---|---|
| 重定向輸入 | < | 從指定的檔案讀取資料,而不是從鍵盤輸入 |
| 重定向輸出 | > >> |
將輸出結果保存到指定的檔案[覆寫原有內容] 將輸出結果追加到指定的檔案 |
| 標準錯誤輸出 | 2> 2>> |
將錯誤資訊保存到指定的檔案[覆寫原有內容] 將錯誤資訊追加到指定的檔案中 |
| 混合輸出 | &> &>> |
將標準輸出、標準錯誤的內容保存到同一個檔案中[覆寫原有內容] 將標準輸出、標準錯誤的內容追加到同一個檔案中 |
管道運算子
"|" : 將左側的命令輸出結果,作為右側命令的處理物件
shell變數
變數的作用
為靈活管理linux系統提供特定引數,由兩層意思
- 變數名 : 使用固定的名稱,由系統預設或用戶定義
- 變數值 : 能夠根據用戶設定、系統環境的變化而變化
變數的型別
- 自定義變數 : 由用戶自定義、使用和修改
- 環境變數 : 由系統維護,用于設定作業環境
- 位置變數 : 通過命令列給腳本程式傳遞引數
- 預定義變數 : Bash中內置的一類變數,不能直接修改
計劃任務
腳本分語法
腳本回圈語法
正則運算式
網路
路由
- 路由
跨越從源主機到目標主機的一個互聯網路來轉發資料包的程序
能夠將資料包轉發到正確的目的地,并在轉發程序中選擇最佳路徑的設備-路由器
- 路由表
路由器中維護的路由條目的集合
路由器根據路由表做路徑選擇
- 直連網段
配置IP地址,埠UP,形成直連路由
- 非直連網段
需要靜態路由或動態路由,將網段添加到路由表中
實驗
DNS/DHCP/SAMBA/FTP
DHCP和DNS服務器IP地址為192.168.18.5,負責為客戶機分配IP地址資訊,并且為FTP服務器192.168.18.6進行域名ftp.mpy.com進行地址決議,SAMBA和FTP服務器地址IP為192.168.18.6,/share目錄為公有共享目錄,獨立掛載到lvm卷,進行配置額設定list可以上傳10個檔案,zhangsan用戶只讀,lisi用戶讀寫,將用戶家目錄掛載到lvm卷,進行配額,用戶最多上傳10個檔案
DHCP和DNS服務器
實作IP地址分發和域名決議
- 重新掛載光碟
umount /dev/sr0
mount /dev/sr0 /media
- 關閉防火墻、SELINUX
systemctl stop firewalld
setenforec 0
iptables -F
- 修改IP
vim /etc/sysconfig/network-scripts/ifcfg-xxx
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.18.5
NETMASK=255.255.255.0
GATEWAY=192.168.18.1
DNS=192.168.18.5
- 設定yum本地倉庫
mkdir /root/yum.bak
mv /etc/yum.repos/* /root/yum.bak
- 更新yum
yum clean all
yum list
- 安裝DHCP
yum install -y dhcp
- 配置DHCP主檔案
vim /etc/dhcp/dhcpd.conf
:sp /usr/share/doc/dhcp4.xxxxx/dhcpxxxxxx
找到樣板
9yy復制后,ctl+w+下箭頭調到配置目錄中,按p復制subnet 192.168.18.0 netmask 255.255.255.0 {
range 192.168.18.10 192.168.18.30;
option domain-name-servers 192.168.18.5;
option domain-name "internal.example.org";
option routers 192.168.18.1;
option broadcast-address 192.168.18.255;
default-lease-time 600;
max-lease-time 7200;
}host fantasia {
hardware ethernet 00:0c:29:7e:b0:9e;
fixed-address 192.168.18.6;
}
- 安裝DNS服務
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
- 配置服務
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var
cp -rp /var/named/dynamic /var/named/chroot/var/named
chown -R :named /var/naemd/chroot/var/named/
chown -R named /var/named/chroot/var/named/data
chown -R named /var/named/chroot/var/named/slaves
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 組態檔
vim /var/named/chroot/etc/named.conf
// 兩個換成any
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
vim /var/named/chroot/etc/named.rfc1912.zones
// 正向決議
zone "mpy.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};// 反向決議
zone "18.168.192.in-addr.arpa" IN {
type master;
file "18.168.192.in.zone";
allow-update { none; };
};
- 新建檔案
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpy.com.zone
cp -p /var/named/chroot/var/named/named.loopback /var/named/chroot/var/named/18.168.192.in.zone
vim mpy.com.zone
$TTL 1D
@ IN SOA mpy.com. mpy.qq.com. (
2022101020 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpy.com.
ns1 IN A 192.168.18.5
ftp IN A 192.168.18.6
vim 8.168.192.in.zone
TL 1D
@ IN SOA mdns.com. mpy.qq.com. (
2022101001 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mdns.com.
ns1 IN A 192.168.18.5
5 IN PTR mpy.mdns.com.
- 運行named
systemctl start named
- 復制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 運行named-chroot
systemctl start named-chroot
制作lvm卷
在檔案服務器上添加硬碟制作lvm卷,掛載到目錄,設定配額
- 制作lvm卷,掛載目錄
新增兩塊硬碟
fdisk -l
pvcreate /dev/sdb
vgcreate ctvg /dev/sdb
lvcreate -l 100 -n sharelv ctvg
lvcreate -l 100 -n homelv ctvg
pvcreate /dev/sdc
vgextend ctvg /dev/sdc
lvextend -L +200M /dev/ctvg/homelv
resize2fs /dev/ctvg/homelv
mkfs.ext4 /dev/ctvg/sharelv
mkfs.ext4 /dev/ctvg/homelv
mkdir /share
mount /dev/ctvg/sharelv /share
mount /dev/ctvg/homelv /home
- 設定配額
mount -o remount,usrquota,grpquota /dev/ctvg/sharelv /share
mount -o remount,usrquota,grpquota /dev/ctvg/homelv /home
mount | tail -2
vim /etc/fstab
// 添加以下資訊
/dev/ctvg/sharelv/ /share defaults,usrquota,grpquota 0 0
/dev/ctvg/homelv/ /home defaults,usrquota,grpquota 0 0
quotacheck -augvc
- 新建用戶
useradd zhangsan
passwd zhangsan
useradd lisi
passwd lisi
- 增加用戶
edquota -u zhangsan
Disk quotas for user zhangsan (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/mapper/ctvg-homelv 0 0 0 0 0 10
/dev/mapper/ctvg-sharelv 0 0 0 0 0 10
edquota -p zhangsan lisi
edquota -u lisi
quotaon -ugv /share/
samba和vsftp
根據需求設定訪問權限
- 掛載鏡像檔案
umount /dev/sr0
mount /dev/sr0 /media
- 配置yum源
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
vim /etc/yum.repos.d/test.repo
[test]
name=test
baseurl=file:///media
enable=1
gpgcheck=0
- 安裝samba
yum install -y samba
- 增加用戶
pdbedit -a -u zhangsan
pdbedit -a -u lisi
- 組態檔
vim /etc/samba/smb.conf
[share]
path=/share
public=yes
read only=yes
write list=lisi
chmod 777 /share
chmod o+t /share
systemctl start smb
systemctl start nmb
DNS/Suid/Web
主機[192.168.12.10]訪問服務器[202.10.1.10]會經過中間代理服務器[192.168.12.1和202.10.1.1],日志記錄從192.168.12.10訪問變成202.10.1.1訪問
DNS環境、Web環境
202.10.1.10
- 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR="202.10.1.10" NETMASK="255.255.255.0" GATEWAY="202.10.1.1"
- 安裝DNS服務
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
- 配置服務
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var
cp -rp /var/named/dynamic /var/named/chroot/var/named
chown -R :named /var/naemd/chroot/var/named/
chown -R named /var/named/chroot/var/named/data
chown -R named /var/named/chroot/var/named/slaves
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 組態檔
vim /var/named/chroot/etc/named.conf
// 兩個換成any
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
vim /var/named/chroot/etc/named.rfc1912.zones
// 正向決議
zone "mpya.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};zone "mpya.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};// 反向決議
zone "1.10.202.in-addr.arpa" IN {
type master;
file "1.10.202.in.zone";
allow-update { none; };
};
- 新建檔案
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpya.com.zone
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpyb.com.zone
cp -p /var/named/chroot/var/named/named.loopback /var/named/chroot/var/named/1.10.202.in.zone
vim mpya.com.zone
$TTL 1D
@ IN SOA mpya.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpya.com.
ns1 IN A 202.10.1.10
www IN A 202.10.1.10
vim mpyb.com.zone
$TTL 1D
@ IN SOA mpyb.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpyb.com.
ns1 IN A 202.10.1.10
www IN A 202.10.1.10
vim 1.10.202.in.zone
$TTL 1D
@ IN SOA pdns.com. xiaozhang.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.pdns.com.
ns1 IN A 202.10.1.10
10 IN PTR bj.pdns.com.
- 運行named
systemctl start named
- 復制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 運行named-chroot
systemctl start named-chroot
- 配置httpd-2.4.54
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
- 如果缺什么環境直接yum安裝
yum install -y apr*
yum install -y pcre*
- 編譯
make && make install
- 啟動服務
/usr/local/httpd/bin/apachectl start
netstat -anpt | grep 80
- 修改組態檔
vim /usr/local/httpd/conf/httpd.conf
找到ServerName,將注釋去掉
- 設定系統服務啟動
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
啟動方法為 : service restart httpd
- 創建測驗站點
mkdir -p /var/www/html
mkdir /var/www/html/mpya /var/www/html/mpyb
- 創建測驗網頁
vim /var/www/html/mpya/index.html
<h1>mpya</h1>vim /var/www/html/mpyb/index.html
<h1>mpya</h1>
- 修改虛擬主機檔案
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpya"
ServerName www.mpya.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/mpya.com-error_log"
CustomLog "logs/mpya-access_log" common
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpyb"
ServerName www.mpyb.com
ErrorLog "logs/mpyb-error_log"
CustomLog "logs/mpyb-access_log" common
- 修改主組態檔,開啟vhosts的模塊
vim /usr/local/httpd/conf/httpd.conf
將注釋去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]
- 重啟服務
/usr/local/httpd/bin/apachectl restart
- 給目錄添加授權
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html">
require all granted
- 重啟服務
/usr/local/httpd/conf/extra/httpd-vhosts.conf
- 訪問站點[修改DNS為202.10.1.10]
安裝squid
192.168.12.1 / 202.10.1.1
- 設定兩塊網卡

- 配置IP

- 安裝squid
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-nuderscore --enable-gnuregex
- 編譯
make
make install
- 創建用戶
useradd -M -s/sbin/nologin squid
- 給權限
chown -R squid:squid /usr/local/squid
chmod -R 777 /usr/local/squid/var/
- 啟動服務
/usr/local/squid/sbin/squid
- 配置
vim /etc/squid.conf
reply_body_max_size 10 MB
http_access allow all
- 重啟服務
killall -9 squid
/usr/local/squid/sbin/squid
- 設定透明代理
vim /etc/squid.conf
http_port 192.168.12.1:3128 transparent // 修改為內網IP
killall -9 squid
/usr/local/squid/sbin/sqiud
- 設定防火墻
systemctl start firewalld
iptables -F
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
// 往nat表中的PREROUTING鏈中添加從ens33網卡來的源IP地址為192.168.12.0網段的并且目標埠是80要重定向埠到3128
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
跨網段ping通
開啟路由轉發功能[192.168.12.1 / 202.10.1.1]
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
客戶端設定
- 在能ping通的情況下修改DNS為202.10.1.10

- 在不設定透明代理的情況下[192.168.12.1 / 202.10.1.1修改/etc/squid.conf 中的http_port為3128]去訪問兩個網站


是客戶端直接去訪問
- 設定代理或透明代理

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516271.html
標籤:Linux
