主頁 > 作業系統 > linux

linux

2022-10-18 06:09:33 作業系統

以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 3systemctl 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命令分類

  1. 內部命令
  • 繼承與shell解釋器程式內部的一些特殊指令,也稱為內建(Built-in)指令
  • 屬于shell的一部分
  • 沒有單獨對應的系統檔案
  • 自動載入記憶體,可以直接使用
  1. 外部命令
  • 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類似
  • 查看檔案的頭幾行[默認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命令與程式關系

  1. 檔案位置

    1. 系統命令

      一般在/bin和/sbin目錄中,或為shell內部指令

    2. 應用程式

      通常在/usr/bin和/usr/sbin目錄中

  2. 主要用途

    1. 系統命令

      完成對系統的基本管理作業,例如IP配置工具

    2. 應用程式

      完成相對獨立的其他輔助任務,例如網頁瀏覽器

  3. 適用環境

    1. 系統命令

      一般只在字符操作界面中運行

    2. 應用程式

      根據實際需要,有些程式可在圖形界面中運行

  4. 運行格式

    1. 系統命令

      一般包括命令字、命令選項和命令引數

    2. 應用程式

      通常沒有固定的執行格式

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
  1. 由Red Hat公司提出,被眾多linux發行版所采用
  2. 建立同意的資料庫檔案
  3. 詳細記錄軟體包的安裝、卸載等變化資訊
  4. 自動分析軟體包依賴關系
  • 一般命名格式

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

從源代碼編譯安裝程式

編譯安裝程序

  1. 解包

    tar -zxvf 軟體包 想要解壓的路徑

  2. 配置

    cd 解壓的路徑

    ./configure --prefix=安裝路徑[/usr/local/]

  3. 翻譯

    make命令

  4. 安裝

    make install

linux賬戶與權限

管理用戶和組賬號

用戶和組

  • 用戶賬號
    1. 超級用戶
    2. 普通用戶
    3. 程式用戶
  • 組賬號
    1. 基本組[私有組]
    2. 附加組[公共組]
  • UID和GID
    1. UID[用戶識別符號]
    2. 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命令含義相同

  • 給用戶搬家
  1. 使用usermod搬家

    usermod -d /test/test1 test1

  2. 使用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服務器]

設定網路

  1. 臨時配置 - 使用命令調增網路引數

    • 簡單、快速,可直接修改運行中的網路引數
    • 一般只適合在除錯網路的程序中使用
    • 系統重啟以后,所做的修改將會失效
  2. 永久配置 - 通過組態檔修改網路引數

    • 修改各項網路引數的組態檔

    • 適合對服務器設定固定引數時使用

    • 需要多載網路服務或者重啟以后才會生效

臨時配置

網路配置

  1. 設定網路介面的IP地址、子網掩碼

ifconfig 介面名 ip地址 [netmask 子網掩碼]

ifconfig 網路介面 ip地址[/掩碼長度]

  1. 禁用或者重新激活網卡

ifconfig 網路介面 up

ifconfig 網路介面 down

  1. 設定虛擬網路介面

ifocnfig 介面名:序號 ip地址

ifconfig ens1:1 10.1.1.1

設定路由

  1. 添加到指定網段的路由記錄

route add -net 網段地址 gw ip地址

  1. 洗掉到指定網段的路由記錄

route del -net 網段地址

  1. 洗掉路由表中的默認網關記錄

route del default gw ip地址

  1. 向路由表中添加默認網關記錄

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構成[全域配置引數、網段宣告、配置選項、配置引數、主機宣告]
  1. 全域設定,作用于整個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

  1. 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;
}
  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服務

  1. 確保鏡像檔案可以使用

  1. 可以重新掛載路徑

mount | grep CentOS

umount /dev/sr0

mount /dev/sr0 /media/

  1. 找到dhcp軟體

cd /media/Packages

ls | grep dhcp

  1. 安裝軟體

rpm -ivh dhcp-4.2.5-68.el7.centos.x86_64.rpm

配置DHCP服務器

  1. 修改組態檔

vim /etc/dhcp/dhcpd.conf

  1. 在末行模式下匯入樣板檔案

:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

  1. 在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;
}
  1. 開啟DHCP服務

systemctl start dhcpd

搭建DHCP環境

  1. centos7網路配置

  1. windows測驗機器

  1. 查看新網卡
[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
  1. 配置新網卡

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"
  1. 啟動新網卡[ens36]

ifup ens36

  1. 配置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;
}
  1. windows機器重新獲取ip

ipconfig /flushdns

ipconfig /renew

DNS服務

作用和型別

作用

  1. 正向決議 : 根據主機名稱[域名]查找對應的IP地址
  2. 反向決議 : 根據IP地址查找對應的主機域名

型別

  1. 快取域名服務器
    • 也稱為高速快取服務器
    • 通過向其他域名服務器查詢獲得域名->IP地址記錄
    • 將域名查詢結果快取到本地,提高重復查詢時的速度
  2. 主域名服務器
    • 特定DNS區域的官方服務器,具有唯一性
    • 負責維護該區域內所有域名->IP地址的映射記錄
  3. 從域名服務器
    • 也稱為輔助域名服務器
    • 其維護的域名->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 : 偽裝目錄

組態檔

  1. 全域TTL配置及SOA記錄
    • $TTL[Time To Live生存時間]記錄
    • SOA[Start Of Authority授權資訊開始]記錄
    • 分號';'開始的部分表示注釋資訊
  2. 正向域名決議記錄
    • NS域名服務器[Name Server]記錄【指該域名區域中,有哪些服務器負責決議這個域名】
    • MX郵件交換[Mail Exchange]記錄【】
    • A地址[Address]記錄,只用在正向決議區域中
    • CNAME別名[Canonical Name]記錄
  3. 反向域名決議記錄
    • PTR指標[Point]記錄,只用在反向決議區域中
    • 記錄的第一列指定IP地址中的主機地址部分即可

搭建DNS服務器

  • 兩臺centos7服務器,主DNS192.168.12.5,從DNS192.168.12.104

安裝

配置兩個正向決議[chaitin.com | alibaba.com]和一個反向決議[192.168.50.131 -> bj.pdns.com]

  1. 在光碟中找到軟體

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

  1. 復制檔案修改權限

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/

  1. 修改組態檔

vim /var/named/chroot/etc/named.conf // 主組態檔

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

  1. 生成對應域名的資料檔案

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

  • 正向配置

  • 反向配置

  1. 運行named

systemctl start named

  1. 復制named.run

find / -name named.run

cp -p /var/named/data/named.run /var/named/chroot/var/named/data/

  1. 運行named-chroot

systemctl start named-chroot

  1. 解決報錯
[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

  1. 設定windows機器IP

  1. 關閉centos防火墻

systemctl stop firewalld

iptables -F

  1. 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

搭建從域名服務器

  • 區域傳送
  1. 在光碟中找到軟體

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

  1. 復制檔案修改權限

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/

  1. 修改組態檔
  • 在客戶端配置

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
 ;
  1. 客戶機設定DNS

vim /etc/resolv.conf

nameserver 192.168.12.5

  1. 確保可以ping通
  2. 例外處理

dumping master file: slaves/tmp-dt1dKHtvrc: open: permission denied

  • 權限不夠

chown -R named:named /var/named/chroot/var/named/slaves/

  1. 啟動服務[遇到例外,和上面的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

默認的鏈接命令

  1. ssh [遠程安全登陸]

ssh user@host -p 22

  1. scp [遠程安全復制]

scp user@host:file1 file2 // 把服務器的檔案拷貝到本地,file1表示服務器檔案路徑,file2表示本機檔案存放路徑

scp file1 user@host:file2 // 把本地檔案拷貝到服務器中,file1表示本機檔案存放路徑,file2表示服務器檔案路徑

OpenSSH客戶端

  • xhell
  • mobaxterm

密鑰對驗證的SSH體系

實作程序

  1. 創建密鑰對

Linux使用ssh-keygen命令

可用的加密演算法 : RSA或DSA

  • 密鑰檔案 : id_rsa

  • 公鑰檔案 : id_rsa.pub

  1. 上傳公鑰檔案id_rsa.pub

任何方式均可[共享、FTP、Email、SCP……]或者命令匯入ssh-copy-id -i 本地公鑰檔案位置 user@host

  1. 匯入公鑰資訊

將公鑰文本添加至目標用戶的公鑰庫或者命令匯入ssh-copy-id -i 本地公鑰檔案位置 user@host

公鑰檔案 : ~/.ssh/authorized_keys

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
  1. 使用密鑰對驗證方式

驗證用戶 : 服務端的用戶lisi

驗證密碼 : 客戶端的用戶zhangsan的私鑰短語

vim /etc/ssh/sshd_config

將PubkeyAuthentication yes前面的注釋去掉,將公鑰認證開啟

將PasswordAuthentication yes改成no,將密碼認證關掉

TCP Wrappers

linux中的一個外掛程式

概述

保護機制的實作

  1. 通過tcpd主程式對其他服務程式進行包裝
  2. 由其他服務程式呼叫libwrap.so.*鏈接庫

訪問策略

  1. 訪問控制策略的組態檔

/etc/hosts.allow

/etc/hosts.deny

  1. 設定訪問控制策略
    1. 策略格式【服務串列:客戶機地址串列】
    2. 服務串列【多個服務以逗號分隔,ALL表示所有服務】
    3. 客戶機地址串列
      1. 多個地址以逗號分隔,ALL表示所有地址
      2. 允許使用通配符?和*
      3. 網段地址,如192.168.1.或者192.168.1.0/255.255.255.0
      4. 區域地址,如.benet.com
vim /etc/hosts.allow
sshd:192.168.12.100

vim /etc/hosts.deny
sshd:all

linux檔案傳輸服務

SAMBA服務

  1. SMB協議

    服務訊息塊

  2. CIFS協議

    通用互聯網檔案系統

  3. 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

  1. 建立samba用戶資料庫檔案

/var/lib/samba/private/passdb.tdb

  1. 設定上傳目錄及權限

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用戶可寫

  1. 共享賬號映射[別名]

vim /etc/samba/smbusers

添加以下資訊

zhangsan = zs

root = administrator

  1. 啟用別名

vim /etc/samba/smb.conf

在[global]中添加或修改

username map = /etc/samba/smbusers

  1. 重啟服務

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/

  1. 重新掛載鏡像檔案

mount | grep CentOS

umount /dev/sr0

mount /dev/sr0 /media/

cd /media/Packages

  1. 安裝主程式

rpm -ivh samba-4.7.1-6.el7.x86_64.rpm

或者 yum install -y samba【缺少依賴時使用】

  1. 建立samba用戶資料庫檔案

useradd zhangsan

pdbedit -a -u zhangsan // 將系統用戶添加為samba用戶

pdbedit -L // 查看samba用戶

pdbedit -vL // 查看所有的samba用戶

  1. 關閉防火墻、SELINUX

    systemctl stop firewalld

    setenforce 0

  2. 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還可以上傳]

  1. 修改所有人可以讀,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用戶可寫
  1. 修改其他用戶[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/*

  1. 重新掛載光碟

umount /dev/sr0

mount /dev/sr0 /media

  1. 移動源檔案

mkdir /root/yum.bak

mv /etc/yum.repos.d/* /root/yum.bak

  1. 指定源

vim /etc/yum.repos.d/test.repo

[local-yum]
name = local-yum
baseurl = file:///media/
enabled=1
gpgcheck=0

  1. 清除yum快取,重新生成

yum clean all

yum list

  1. 安裝軟體

yum install -y 軟體

yum install -y vsftpd

服務器安裝源

  • 服務器端設定[1. 修改掛載點,將目錄設定為ftp共享目錄 2. 直接將掛載點設定為默認的/var/ftp/]

    1. 重新掛載光碟

      umount /dev/sr0

      mount /dev/sr0 /media/

    2. 設定好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

    3. ftp://IP地址可以訪問后即可

  • 客戶端設定

    1. 保存原來的源

      mkdir /root/yum.bak

      mv /etc/yum.repos.d/* /root/yum.bak

    2. 新建源

      vim yum-ftp.repo

      [yum-ftp]

      name=yum-ftp

      baseurl=ftp://IP地址

      enable=1

      gpgcheck=0

    3. 清除原來的源快取

      yum clean all

    4. 更新源

      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服務

  1. 準備匿名FTP訪問的目錄[使匿名FTP對該目錄有寫入權限]

    chown ftp /var/ftp/pub/
    
  2. 開放匿名用戶配置并啟動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
    
  3. 測驗匿名FTP服務器

    輸入ftp://IP地址

用戶驗證的FTP服務

  1. 基本的本地用戶驗證[存在密碼的用戶才可以登陸]

    • ftp://IP登陸進去后的根目錄右鍵選擇登陸

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

  2. 使用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服務器

  1. 安裝檔案[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

  1. 啟動服務

/usr/local/httpd/bin/apachectl start

netstat -anpt | grep 80

  1. 修改組態檔

vim /usr/local/httpd/conf/httpd.conf

找到ServerName,將注釋去掉

  1. 設定系統服務啟動

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

啟動方法為 : service restart httpd

http服務器基礎

  1. 虛擬web主機

    在同一臺服務器中運行多個web站點,其中每一個站點并不獨立占用一臺真正的計算機

  2. http支持的虛擬主機

    1. 基于域名的虛擬主機
    2. 基于IP地址的虛擬主機
    3. 基于埠的虛擬主機

web站點部署

  1. 創建測驗站點

mkdir -p /var/www/html

mkdir /var/www/html/mpya /var/www/html/mpyb

  1. 創建測驗網頁

vim /var/www/html/mpya/index.html

<h1>mpya</h1>

vim /var/www/html/mpyb/index.html

<h1>mpya</h1>
  1. 修改虛擬主機檔案

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

  1. 配置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

  1. 修改主組態檔,開啟vhosts的模塊

vim /usr/local/httpd/conf/httpd.conf

將注釋去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]

  1. 重啟服務

/usr/local/httpd/bin/apachectl restart

  1. 給目錄添加授權

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/var/www/html">

require all granted

  1. 重啟服務

/usr/local/httpd/conf/extra/httpd-vhosts.conf

  1. 訪問站點[修改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中內置的一類變數,不能直接修改

計劃任務

腳本分語法

腳本回圈語法

正則運算式

網路

路由

  1. 路由

跨越從源主機到目標主機的一個互聯網路來轉發資料包的程序

能夠將資料包轉發到正確的目的地,并在轉發程序中選擇最佳路徑的設備-路由器

  1. 路由表

路由器中維護的路由條目的集合

路由器根據路由表做路徑選擇

  1. 直連網段

配置IP地址,埠UP,形成直連路由

  1. 非直連網段

需要靜態路由或動態路由,將網段添加到路由表中

實驗

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

上一篇:keepalived實作nginx負載均衡機高可用

下一篇:keepalived實作nginx負載均衡機高可用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more