一、Linux 操作系統概述
1.1 操作系統的核心價值
????????操作系統的本質是 "使計算機更好用"。它作為用戶與硬件之間的中間層,負責內存管理、進程調度、文件系統管理和設備驅動管理等核心功能,讓用戶無需直接操作硬件即可完成復雜任務。在服務器領域,Linux 憑借其穩定性、安全性和開源特性,已成為全球最主流的操作系統之一。
1.2 Linux 的發展歷程
1.2.1 UNIX 的起源
????????Linux 的故事始于 UNIX。1968 年,通用電器、貝爾實驗室和麻省理工學院合作開發了 Multics 系統,為后續操作系統奠定了多任務、多用戶的設計基礎。1969-1970 年,貝爾實驗室的 Ken Thompson 和 Dennis Ritchie 在 Multics 基礎上開發了 UNIX 系統,其高效性和可移植性使其迅速在學術界傳播。
????????1972 年,UNIX 開始商業發行,加州大學伯克利分校在此基礎上開發了 BSD 版本,與 AT&T 的 System V 形成兩大分支。1991 年,UNIX 系統實驗室推出 System V Release 4,整合了多個版本的特性,成為重要的商業標準。
1.2.2 Linux 的誕生
????????1991 年 10 月 5 日,赫爾辛基大學研究生 Linus Torvalds 在 Usenet 新聞組宣布了 Linux 操作系統的誕生。這款受 Minix 啟發的系統最初僅作為個人項目,卻意外引發全球開發者協作熱潮。1994 年,Linux 1.0 版本正式發布,標志著其進入實用階段。
????????與 UNIX 不同,Linux 采用 GNU GPL 開源協議,允許用戶自由使用、修改和分發源代碼,這種開源模式極大加速了其發展。如今,Linux 已從最初的個人項目成長為支撐全球互聯網基礎設施的核心系統。
1.3 Linux 的應用現狀
- 服務器領域:占據全球 75% 的服務器市場份額,在政府、金融、電信等關鍵領域廣泛應用
- 桌面領域:國內有中標麒麟、深度 Linux 等發行版,國際上 Ubuntu 憑借易用性積累了大量用戶,但在軟硬件兼容性上仍與 Windows 存在差距
- 移動嵌入式領域:Android 系統基于 Linux 內核開發,占據全球 84.6% 的智能手機市場;路由器、智能電視等設備也大量采用定制化 Linux
- 云計算 / 大數據領域:86% 的企業使用 Linux 構建云計算和大數據平臺,逐步取代 UNIX 成為主流
1.4 主流發行版本
- Debian:以穩定性著稱,適合服務器場景,適合高級用戶和系統管理員
- Ubuntu:Debian 的衍生版,易用性強,廣泛應用于桌面、服務器和云計算領域
- 紅帽企業級 Linux(RHEL):首個商業 Linux 發行版,通過 RHCSA/RHCE 認證體系培養了大量系統管理員
- CentOS:基于 RHEL 源代碼重構的免費版本,與 RHEL 兼容性極高,適合預算有限的企業
- Fedora:紅帽的測試平臺,包含最新技術,適合開發者嘗鮮
- Kali Linux:專注于滲透測試的發行版,預裝大量安全工具,是網絡安全從業者的首選
二、Linux 基礎操作指令
2.1 遠程登錄工具 XShell
????????在服務器管理中,圖形界面因資源消耗大、效率低而極少使用,遠程終端成為主要操作方式。XShell 是常用的遠程終端工具,其免費版本(home/school)可滿足個人學習需求(也可以使用虛擬機,但是不推薦新手使用虛擬機)。
登錄步驟:
- 查看 Linux 主機 IP:
ifconfig(可在各大平臺購買云服務器)
- 建立連接:
ssh [IP地址]
- 輸入用戶名和密碼完成登錄
2.2 文件與目錄操作
2.2.1 目錄查看(ls)
ls
命令用于列出目錄內容,選項:
-a
:顯示所有文件(包括以.
開頭的隱藏文件)-l
:顯示詳細信息(權限、所有者、大小、修改時間等)-d
:將目錄本身作為文件顯示-i
:顯示 inode 編號-t
:按修改時間排序-r
:反向排序-R
:遞歸顯示子目錄內容
示例:
# 顯示當前目錄所有文件的詳細信息
ls -al# 顯示/var目錄的inode信息
ls -id /var# 按大小排序顯示/tmp目錄內容
ls -lS /tmp
這里常用選項有 -l -a記住這兩個就行
2.2.2 路徑查看(pwd)
????????在這里介紹幾個標識符 '.' 代表當前工作路徑 '..'代表上一級工作路徑'/'代表根目錄
pwd
命令用于顯示當前工作目錄的絕對路徑:
2.2.3 目錄切換(cd)
cd
命令用于切換工作目錄,Linux 的路徑分為:
- 絕對路徑:從根目錄
/
開始的完整路徑(如/home/whb/test
) - 相對路徑:相對于當前目錄的路徑(如
../temp
表示上級目錄的 temp 文件夾)
常用操作:
# 切換到/tmp目錄
cd /tmp# 返回上級目錄
cd ..# 切換到用戶家目錄
cd ~# 切換到上一次所在目錄
cd -
2.2.4 文件創建(touch)
touch
命令用于創建空文件或修改文件時間戳:
-a
:僅修改訪問時間-m
:僅修改修改時間
示例:
# 創建新文件
touch newfile.txt# 修改文件訪問時間
touch -a oldfile.txt# 查看文件時間信息
stat newfile.txt
文件的時間戳包含三種:
- Access:最后訪問時間
- Modify:內容最后修改時間
- Change:元數據(權限、所有者等)最后修改時間
2.2.5 目錄創建(mkdir)
mkdir
命令用于創建目錄,關鍵選項-p
可遞歸創建多級目錄:
# 創建單級目錄
mkdir docs# 創建多級目錄
mkdir -p project/src/main/java# 查看創建結果 tree命令可能會沒有安裝 安裝指令為:(sudo) yum/apt install -y tree (root賬戶不需要sudo)
tree project
2.2.6 目錄刪除(rmdir)
rmdir
用于刪除空目錄,-p
選項可刪除空的父目錄(指令不常用,推薦使用rm):
# 刪除空目錄
rmdir empty_dir# 遞歸刪除空目錄鏈
rmdir -p a/b/c
注意:若目錄非空,rmdir 會提示錯誤,需使用
rm -r
命令
2.2.7 文件 / 目錄刪除(rm)
rm
是刪除文件和目錄的核心命令,常用選項:
-f
:強制刪除,不提示-i
:刪除前詢問確認-r
:遞歸刪除目錄及內容
示例:
# 刪除文件(會提示)
rm file.txt# 強制刪除目錄及所有內容
rm -rf old_project# 刪除前詢問的遞歸刪除
rm -ri data/
警告:
rm -rf /
是極其危險的命令,會刪除系統所有文件,絕對禁止使用
2.2.8 文件復制(cp)
cp
用于復制文件或目錄,核心選項:
-i
:覆蓋前詢問-r
:遞歸復制目錄-f
:強制覆蓋
示例:
# 復制文件
cp document.txt backup/# 遞歸復制目錄
cp -r src/ dest/# 覆蓋前詢問
cp -i new.txt old.txt# 復制所有txt文件到archive目錄
cp *.txt archive/
2.2.9 文件移動 / 重命名(mv)
mv
可實現文件移動或重命名,常用選項:
-i
:覆蓋前詢問-f
:強制覆蓋
示例:
# 重命名文件
mv oldname.txt newname.txt# 移動文件到目錄
mv report.pdf docs/# 移動多個文件到歸檔目錄
mv *.log logs/# 覆蓋前詢問
mv -i temp.txt data/
2.3 文件內容查看
2.3.1 文本查看(cat)
cat
用于查看文件內容,適合小文件:
-n
:顯示所有行號-b
:僅顯示非空行號-s
:壓縮連續空行為一行
示例:
# 查看文件內容
cat README.md# 顯示行號
cat -n script.sh# 壓縮空行
cat -s notes.txt
2.3.2 分頁查看(more/less)
more
:基本分頁工具,僅支持向前滾動-n
:指定每頁顯示行數q
:退出查看
less
:增強版分頁工具,支持前后滾動和搜索-N
:顯示行號/關鍵詞
:向下搜索?關鍵詞
:向上搜索n
:重復上一次搜索q
:退出
示例:
# 分頁查看長文件
more -20 large_file.log# 帶行號查看并允許搜索
less -N access.log
2.3.3 頭尾查看(head/tail)
head
:顯示文件開頭內容(默認 10 行)tail
:顯示文件結尾內容(默認 10 行),-f
選項可實時監控文件更新
示例:
# 顯示前5行
head -5 config.ini# 顯示最后3行
tail -3 results.txt# 實時監控日志文件
tail -f /var/log/syslog
高級用法:顯示文件的 180-200 行
head -200 file.txt | tail -20
2.4 系統信息查詢
2.4.1 幫助手冊(man)
man
命令用于查看命令手冊,手冊分為 9 個章節:
- 普通命令
- 系統調用(如 open、write)
- 庫函數(如 printf)
- 特殊文件(/dev 下的設備文件)
- 文件格式(如 passwd 文件結構)
- 游戲程序
- 系統變量和附件
- 系統管理命令
- 內核相關
示例:
# 查看ls命令手冊
man ls# 查看printf庫函數(第三章)
man 3 printf# 查看系統調用fork(第二章)
man 2 fork
2.4.2 命令定位(which/whereis)
which
:查找命令的可執行文件路徑whereis
:查找命令的二進制文件、源代碼和手冊頁
示例:
# 查找ls命令位置
which ls# 查找gcc的相關文件
whereis gcc
2.4.3 時間管理(date/cal)
date
命令用于顯示和設置系統時間:
# 顯示當前時間
date# 按指定格式顯示(年/月/日-時:分:秒)
date +%Y/%m/%d-%H:%M:%S# 顯示時間戳(從1970-01-01開始的秒數)
date +%s# 時間戳轉換為可讀時間
date -d @1673432636
cal(calendar)
命令用于查看日歷:
# 顯示當前月日歷
cal# 顯示2024年全年日歷
cal 2024# 顯示包含上月、本月、下月的日歷
cal -3# 顯示當天是當年的第幾天
cal -j
2.4.4 系統信息(uname)
uname
用于查看系統內核信息:
# 顯示內核版本
uname -r# 顯示所有系統信息
uname -a# 查看操作系統版本(部分發行版支持)
lsb_release -a
2.5 搜索與文本處理
2.5.1 文件搜索(find)
find
在目錄樹中搜索文件,常用選項:
-name
:按文件名搜索-type
:按文件類型搜索(f:普通文件,d:目錄,l:鏈接)-size
:按文件大小搜索-mtime
:按修改時間搜索
示例:
# 在當前目錄搜索test.c文件
find . -name "test.c"# 在/home下搜索所有目錄
find /home -type d# 搜索大于100MB的文件
find / -size +100M# 搜索近7天修改過的文件
find /var/log -mtime -7
2.5.2 文本搜索(grep)
grep
用于在文件中搜索字符串,支持正則表達式:
-i
:忽略大小寫-n
:顯示行號-v
:反向匹配(顯示不包含關鍵詞的行)-r
:遞歸搜索目錄
示例:
# 在文件中搜索關鍵詞
grep "error" app.log# 忽略大小寫搜索
grep -i "warning" system.log# 顯示行號并反向匹配
grep -vn "debug" debug.log# 遞歸搜索目錄中的關鍵詞
grep -r "config" /etc/
2.6 壓縮與打包
2.6.1 zip/unzip(知道)
zip
和unzip
用于處理 ZIP 格式壓縮文件:
# 壓縮目錄
zip -r docs.zip documents/# 解壓到指定目錄
unzip docs.zip -d /tmp/
2.6.2 tar(重要)
tar
是 Linux 最常用的打包工具,支持多種壓縮算法:
-c
:創建打包文件-x
:解包-t
:查看包內文件-z
:使用 gzip 壓縮 / 解壓-j
:使用 bzip2 壓縮 / 解壓-v
:顯示過程-f
:指定文件名-C
:指定解壓目錄
示例:
# 打包目錄(不壓縮)
tar -cvf data.tar data/# 用gzip壓縮
tar -zcvf logs.tar.gz /var/log/# 用bzip2壓縮
tar -jcvf docs.tar.bz2 documents/# 查看壓縮包內容
tar -ztvf logs.tar.gz# 解壓到指定目錄
tar -zxvf logs.tar.gz -C /tmp/# 僅解壓包中的特定文件
tar -zxvf docs.tar.bz2 README.md
三、Linux 權限管理系統
3.1 權限的核心概念
????????Linux 是多用戶操作系統,權限系統確保不同用戶對資源的訪問受到合理控制。權限管理基于三個維度:
訪問者分類
- u(User):文件所有者
- g(Group):所有者所在組的用戶
- o(Others):其他用戶
- a(All):所有用戶
文件類型
- d:目錄
- -:普通文件
- l:軟鏈接(快捷方式)
- b:塊設備文件(如硬盤)
- c:字符設備文件(如終端)
- p:管道文件
- s:套接口文件
3.2 基本權限表示
Linux 為每種訪問者分配三種基本權限:
權限 | 字符表示 | 數字表示 | 文件含義 | 目錄含義 |
---|---|---|---|---|
讀 | r | 4 | 可讀取文件內容 | 可列出目錄內容 |
寫 | w | 2 | 可修改文件內容 | 可創建 / 刪除目錄內文件 |
執行 | x | 1 | 可執行文件 | 可進入目錄 |
無權限 | - | 0 | 無對應權限 | 無對應權限 |
????????權限組合采用三位數表示(類似八進制如755
),第一位表示所有者權限,第二位表示組權限,第三位表示其他用戶權限。例如:
rwxr-xr-x
(755):所有者擁有全部權限,組和其他用戶有讀和執行權限rw-r--r--
(644):所有者有讀寫權限,組和其他用戶僅有讀權限
3.3 權限修改命令
3.3.1 chmod:修改文件權限
chmod
用于修改文件或目錄的權限,支持兩種修改方式:
符號法:chmod [u/g/o/a][+/-/=][r/w/x] 文件名
# 給所有者增加執行權限
chmod u+x script.sh# 移除其他用戶的寫權限
chmod o-w data.txt# 給所有用戶設置讀寫權限
chmod a=rw config.ini# 遞歸修改目錄權限
chmod -R g+rx docs/
數字法:chmod 三位數字 文件名
# 設置權限為rw-r--r--
chmod 644 article.txt# 設置目錄權限為rwxr-x---
chmod 750 project/# 遞歸設置目錄及內容權限
chmod -R 775 shared/
3.3.2 chown:修改所有者
chown
用于修改文件的所有者(僅 root 或文件所有者可執行):
# 改變文件所有者
chown alice report.txt# 同時改變所有者和所屬組
chown bob:devs data.csv# 遞歸修改目錄所有者
chown -R www:www /var/www/
3.3.3 chgrp:修改所屬組
chgrp
用于修改文件的所屬組:
# 改變文件所屬組
chgrp devs code.c# 遞歸修改目錄所屬組
chgrp -R admins docs/
3.4 權限掩碼(umask)
umask 用于設置新建文件和目錄的默認權限,其值為 "要去掉的權限"。計算方式為:
- 新建文件默認權限:
0666 & ~umask
(文件默認無執行權限) - 新建目錄默認權限:
0777 & ~umask
示例:
# 查看當前umask
umask# 設置umask(root默認0022,普通用戶默認0002)
umask 002# 驗證:新建文件權限為664(666-002)
touch test.txt
ls -l test.txt # -rw-rw-r--
3.5 特殊權限:粘滯位
????????在默認權限下,只要用戶對目錄有寫權限,就可以刪除目錄中的任何文件,無論該文件的所有者是誰。為解決此問題,Linux 引入粘滯位(Sticky Bit):
- 目錄設置粘滯位后(權限末尾顯示
t
),僅以下用戶可刪除文件:- 超級管理員(root)
- 目錄所有者
- 文件所有者
操作示例:
# 給目錄添加粘滯位
chmod +t /tmp# 查看權限(顯示drwxrwxrwt)
ls -ld /tmp# 移除粘滯位
chmod -t /tmp
系統臨時目錄/tmp
默認設置粘滯位,確保普通用戶不能刪除他人文件。
3.6 sudo 權限管理(需要學習vim工具,后續會講)
sudo 允許普通用戶臨時執行 root 權限命令,配置步驟:
- 修改 sudo 配置文件(需 root 權限):
chmod 740 /etc/sudoers
vi /etc/sudoers
- 添加權限配置(格式:
用戶名 主機=(執行用戶) 命令
):
# 允許alice執行所有命令
alice ALL=(ALL) ALL# 允許bob僅執行useradd和userdel命令
bob ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel
- 普通用戶使用 sudo 執行命令:
# 以root權限創建用戶
sudo -u root useradd newuser
四、Linux 常用進階操作
4.1 管道與重定向
重定向:改變命令輸出方向
>
:覆蓋寫入文件>>
:追加寫入文件<
:從文件讀取輸入
管道:將一個命令的輸出作為另一個命令的輸入(
|
)
示例:
# 將命令輸出寫入文件
ls -l > filelist.txt# 追加輸出到文件
echo "new line" >> notes.txt# 統計文件行數
cat large_file.txt | wc -l# 搜索進程并顯示詳細信息
ps aux | grep "nginx"
4.2 系統進程管理(top)
top
用于實時監控系統進程和資源占用:
-d
:設置刷新間隔(秒)-n
:設置刷新次數
操作快捷鍵:
q
:退出P
:按 CPU 使用率排序M
:按內存使用率排序k
:終止指定進程h
:顯示幫助
示例:
# 每2秒刷新一次,共刷新5次
top -d 2 -n 5
4.3 別名設置(alias)
alias
用于創建命令別名,簡化復雜操作:
# 設置別名
alias ll='ls -alF'
alias rm='rm -i' # 刪除前自動詢問# 查看別名
alias# 取消別名
unalias ll
永久生效需將別名添加到~/.bashrc
或~/.bash_profile
文件。
4.4 文件傳輸(rz/sz)
通過 XShell 在 Windows 和 Linux 間傳輸文件:
# 安裝工具
sudo yum install -y lrzsz# 上傳文件(從Windows到Linux)
rz # 執行后選擇本地文件# 下載文件(從Linux到Windows)
sz filename.txt
五、權限管理實踐案例
5.1 網站目錄權限配置
為確保 Web 服務器安全,合理配置目錄權限:
# 創建網站根目錄
mkdir -p /var/www/example.com# 設置所有者為www-data(Web服務用戶)
chown -R www-data:www-data /var/www/example.com# 目錄權限:所有者讀寫執行,組讀執行,其他無權限
find /var/www/example.com -type d -exec chmod 750 {} \;# 文件權限:所有者讀寫,組讀,其他無權限
find /var/www/example.com -type f -exec chmod 640 {} \;
5.2 多用戶協作目錄
創建團隊共享目錄,確保成員可讀寫但不能刪除他人文件:
# 創建共享目錄
mkdir /team/share# 設置所屬組為dev
chgrp -R dev /team/share# 允許組內用戶讀寫,添加粘滯位
chmod -R 775 /team/share
chmod +t /team/share
5.3 日志文件權限控制
確保日志文件可被服務寫入,同時僅管理員可查看:
# 創建日志目錄
mkdir /var/log/app# 設置所有者為應用用戶,所屬組為adm
chown -R appuser:adm /var/log/app# 目錄權限:所有者全權限,組讀執行,其他無
chmod 750 /var/log/app# 日志文件權限:所有者讀寫,組讀,其他無
chmod 640 /var/log/app/*.log
六、總結與擴展學習
????????Linux 指令和權限管理是系統運維的基礎,掌握這些知識不僅能提高工作效率,更能構建安全可靠的系統環境。學習建議:
- 刻意練習:通過實際操作記憶指令,避免死記硬背
- 查看手冊:善用
man
命令查詢參數細節 - 理解原理:不僅要知道 "怎么做",更要理解 "為什么"
- 安全意識:操作權限和刪除命令時務必謹慎,養成備份習慣
????????進階學習方向:Shell 腳本編程、Linux 內核原理、容器化技術(Docker)等,這些都需要扎實的 Linux 基礎作為支撐。
????????Linux 的開源生態和豐富工具鏈為技術人員提供了無限可能,持續探索和實踐,才能真正發揮其強大能力。