Linux 系統管理員的日常工作中,檔案與目錄管理是不可或缺的環節。熟練掌握這些操作技巧,能有效提升工作效率並確保系統安全。本文從最基礎的 touch、mkdir、cp 和 rm 指令開始,帶領讀者逐步建立檔案與目錄操作的基礎。接著,文章探討 Linux 檔案系統的層次結構,詳細介紹了 /bin、/boot、/dev、/etc、/home 等關鍵目錄的用途,並特別針對 /etc 目錄下的重要檔案進行說明,例如 /etc/passwd、/etc/shadow 和 /etc/sudoers 等。瞭解這些目錄的功用和重要檔案的設定,對於系統管理至關重要。除了基本操作,文章也介紹瞭如何在 Bash shell 中有效地導航檔案系統,例如使用 cd 切換目錄、pushd 和 popd 管理目錄堆積疊,以及 cd - 快速傳回上一層目錄。此外,文章也分享了一些實用的技巧,例如 Tab 自動完成、別名設定和 Ctrl+R 倒序搜尋等,能大幅提升指令行操作的效率。最後,文章著重講解了 Linux 的許可權管理機制,涵蓋讀取、寫入和執行三種基本許可權,以及擁有者、群組和其他人的許可權設定。透過 chmod、chown 和 chgrp 等指令,可以精確控制檔案和目錄的存取許可權。此外,文章也詳細解釋了 SUID、SGID 和 Sticky Bit 等特殊許可權的應用場景,並提供相關指令範例,幫助讀者更深入地理解 Linux 許可權管理的運作方式。
檔案與目錄管理
基本操作
在 Linux 系統中,檔案與目錄的管理是日常操作的基礎。以下是一些基本的指令,用於建立、複製、刪除及導航檔案與目錄。
建立空白檔案
使用 touch 指令可以建立一個新的空白檔案。例如,要建立一個名為 test.txt 的檔案,可以使用以下指令:
touch test.txt
建立新目錄
使用 mkdir 指令可以建立一個新的目錄。例如,要建立一個名為 new_directory 的目錄,可以使用以下指令:
mkdir new_directory
如果需要建立多層巢狀的目錄結構,可以使用 -p 選項。例如,要建立一個名為 first/second 的目錄結構,可以使用以下指令:
mkdir -p first/second
複製檔案與目錄
使用 cp 指令可以複製檔案或目錄。其語法如下:
cp [來源] [目的地]
刪除檔案與目錄
使用 rm 指令可以刪除檔案。需要注意的是,刪除操作不可回復,請謹慎使用。如果需要刪除一個目錄及其內容,可以使用 -r 選項。以下是一些範例:
rm test.txt # 刪除名為 test.txt 的檔案
rm -r new_directory # 刪除名為 new_directory 的目錄及其內容
檔案系統導航與操作
在這一部分,我們將探討 Linux 檔案系統的結構、常見目錄的用途以及如何有效地在其中導航。
檔案系統設計與層次結構
Bash 操作的核心在於理解檔案系統的層次結構。我們將討論各種檔案系統目錄及其用途,並特別關注對測試人員(pentester)有興趣的目錄。這將幫助我們在檔案系統中自如地導航。
以下是一些常見的 Linux 檔案系統目錄及其用途:
/bin
位於根目錄下的 /bin 目錄包含了每個使用者都能存取的基本指令程式或工具。這些工具是日常操作所必需的。
/boot
/boot 目錄包含了系統啟動所需的檔案,例如 Linux 作業系統核心和初始 RAM 塊(initrd)檔案。
/dev
/dev 目錄包含了代表硬體裝置和特殊檔案的裝置檔案。
/etc
/etc 目錄包含了許多對系統執行至關重要的組態檔案。測試人員可能會對其中某些檔案和目錄感興趣。以下是一些重要的檔案和目錄:
/etc/passwd:包含了系統上使用者的基本資訊,如使用者 ID、群組 ID、家目錄和殼。/etc/group:列出了系統上的群組及其成員。/etc/shadow:儲存了使用者密碼資訊,包括雜湊密碼和帳戶到期日期。/etc/sudoers:列出了允許使用sudo指令執行提升許可權命令的使用者和群組。/etc/sysconfig:包含了各種系統服務和應用程式的組態檔案,例如網路設定、顯示管理器組態和防火牆規則。/etc/network:包含了網路介面的組態檔案,例如 IP 地址、子網路掩碼和 DNS 伺服器設定。/etc/hosts:將主機名對應到 IP 地址,使系統能夠在不依賴 DNS 伺服器的情況下解析主機名到 IP 地址。/etc/services:列出了可用於系統上的服務及其埠號和協定。/etc/protocols:列出了系統支援的網路協定及其版本號和其他組態細節。/etc/fstab:包含了已掛載到系統上的檔案系統資訊,包括掛載點、檔案系統型別和選項。
/home
每個使用者特定資料都存放在 /home 下。每個使用者都有自己的家目錄來存放個人檔案和設定。
/lib
系統庫存放在 /lib 中,這些函式庫是程式所需的一些分享資源。
/mnt 和 /media
這些是用來掛載外部裝置或檔案系統的位置。它們就像外部檔案系統的停靠站。
/opt
可選或第三方軟體通常存放在 /opt 中。測試人員經常會將 Git 儲存函式庫複製到自己的目錄中以執行未安裝在通常位置(如 /bin) 的工具。
/proc
此圖示展示了程式資訊
graph TD;
A[/proc] --> B[程式1];
A --> C[程式2];
A --> D[程式3];
B --> E[程式細節];
C --> F[程式細節];
D --> G[程式細節];
此圖示展示了 /proc 中各種程式資訊。
/root
超級使用者(root)的家目錄位於 /root. 由於 root 是超級使用者,它們不會與其他家庭成員一樣被存放在/home。
/run
此圖示展示了轉瞬即逝資料並由 /run 中之內容展示例項化後之資料型別描述
graph TD;
A[/run] --> B[轉瞬即逝資料];
B --> C[詳細資料描述];
/sbin
此圖示展示了跟隨/bin附近之/sbin內容展示例項化後之資料型別描述
graph TD;
A[/sbin] --> B[sbin內容];
B --> C[詳細資料描述];
/srv, /sys, 和/tmp
- /srv:存放由系統服務所使用資料
- /sys:提供與核心物件及其屬性進行互動介面。
- /tmp:臨時資料儲存區域,系統重啟時將被清除。
例如,
$ touch test_file.txt # 在/tmp下建立一個新空白檔案test_file.txt.
$ rm test_file.txt # 在/tmp下刪除test_file.txt.
/usr, 使用者可執行二進位制檔案、函式庫、檔案等集合中心,
此圖示展示了/usr中之內容
graph TD;
A[/usr] --> B[二進位制檔案];
A --> C[函式庫];
A --> D[檔案];
使用者導航與實踐經驗總結
熟練掌握這些命令和概念對任何Linux系統管理員來說都是必要條件.透過這些基本操作我們可以更高效地管理系統並避免一些常見錯誤.希望大家能夠舉一反三.
Linux 系統檔案與目錄管理
在 Linux 系統中,/var 目錄是檔案系統層級結構中極其重要的部分,主要用來存放變動資料、檔案和目錄,這些資料在系統運作過程中可能會隨著時間不斷增長。這些資料可能包括記錄檔、佇列檔、臨時檔以及其他動態或過渡性的資料,隨著系統操作而變化或擴充套件。/var 目錄的結構和內容旨在儲存這些變動資料,即使系統重新啟動,這些資料仍會持續存在。以下是 /var 目錄中的一些重要子目錄及其常見用途:
/var/log
此目錄包含由系統和各種應用程式產生的記錄檔。這些記錄可能包括系統記錄、應用程式記錄及系統事件記錄,對於排除故障和監控系統健康狀況至關重要。
/var/spool
此目錄用來佇列任務和資料,例如列印工作、郵件以及其他等待處理的任務。這個區域設計用來儲存等待某個服務或應用程式處理的資料。
/var/tmp
此目錄用來儲存那些需要在系統重新啟動後仍然保留的臨時檔案。與 /tmp 不同,/tmp 可能會儲存臨時檔案,但它們在重新啟動時可能會被刪除或清除。
/var/cache
此目錄儲存應用程式的快取資料。這些資料可以在需要時重新產生,但儲存在快取中以提高效能,減少重複計算或取得相同資料的需求。
/var/mail
某些組態下,此目錄會儲存使用者的電子郵件訊息。對於處理本地郵件儲存的系統來說,這個目錄至關重要。
/var/www
通常作為網頁伺服器內容的預設目錄。包含伺服器上主機的網站,也是許多 Linux 發行版中的網頁檔案標準位置。
/var/lib
此目錄包含程式在執行期間通常修改的動態狀態資訊。這些可能包括資料函式庫、應用程式狀態檔案以及其他應用程式在運作期間需要儲存和管理的資料。
你可以透過輸入 man hier 命令來閱讀 Linux 檔案系統層級結構的檔案:
$ man hier
小技巧
man 命令代表手冊(manual)。當你需要發現命令所需的選項和慣例時,請記得使用 man 命令。
指令行介面中的目錄導航與操作
雖然目前工作目錄可能顯示在 Bash shell 提示符中,你仍可以使用 pwd 命令來列印當前目錄:
~ $ pwd
/home/steve
現在我們已經瞭解了檔案系統佈局及其層級結構設計,接下來我們將探討如何導航它。
檔案系統導航指令
導航檔案系統可以使用各種工具和技術。最常見的方法是使用命令列介面(CLI)並透過 cd 命令導航到不同的目錄。例如,要切換到 /home 目錄,你可以輸入以下命令:
$ cd /home
前面我們提到過波浪號(~)字元是進入完整使用者目錄路徑的捷徑,因此你也可以透過在 cd 命令後使用波浪號來導航到你的家目錄:
$ cd ~
如果你已經在個人設定檔中組態了 Tab 鍵自動完成功能,那麼你可以使用 Tab 鍵來自動完成輸入中的目錄名稱,從而更輕鬆地導航到檔案系統。
除了 cd ,Bash shell 提供了幾個其他指令來幫助你遍歷目錄,例如 pushd 和 popd 。這兩個指令就像是在野外留下的一串麵包屑,幫助你追蹤曾經去過的地方以便輕鬆傳回。當你 pushd 進入一個新目錄時,Bash 會記住你當前所在位置然後移動到新位置。需要回到之前的位置嗎?只需輸入 popd ,你就能傳回之前所在位置。就像命令列工具箱中有個傳送門設定一樣:
~ $ pushd /var/log
/var/log ~
/var/log $ pushd /etc
/etc /var/log ~
/etc $ popd
/var/log ~
/var/log $ popd
~ $
相對與絕對路徑
現在是談論相對路徑與絕對路徑之間差異的一個好時機。絕對路徑是從磁碟根(/`)開始的一整條路徑。例如:/home/user/filename 是家目錄中某個檔案的一個絕對路徑。相對路徑則是根據當前所在之目錄而定義的路徑。當前目錄以一個點及斜線(./)表示;上一層則以兩點及斜線(../)表示;再上一層就會是(../../),以此類別推。若要進入目前位置下的一個子目錄中則只需直接輸入該子目的名稱即可。例如:如果想參考目前所在之子目的名稱下再深入兩層路徑中的某檔案則應該寫成 directory1/directory2/filename 。
假如我們現在正深深地埋藏在某一樹狀結構底部並需要跳回多層級以上時候:顯然地手動輸入 cd ../../.. 已經既麻煩又容易出錯;因此就出現了「cd -」指令:一個簡單有效且強大的捷徑能即刻將我們帶回先前所在位置——就像有一個復原錯誤選擇按鈕存在於我們指令行工具箱之中一般:
~ $ cd /opt
/opt $ cd -
/home/steve
~ $
但是如果我們能夠跳轉至頻繁使用之特定資料夾而無需記憶其路徑該有多好?答案就是「別名」:透過往 .bashrc 檔案內加上 alias docs=‘cd /home/user/documents’ 一行指令便可創造出那些長且繁瑣之路徑之捷徑;此刻移動至資料夾將比較起之前更加簡單了——只需直接敲下 docs 指令即可完成!
對於那些追求效率的人來說,「Ctrl + R 倒序搜尋」功能實在是改變遊戲規則的一招:按下該組合鍵並開始敲打某條先前曾執行過之指令片段;Bash 則會搜尋歷史紀錄並給予比對建議——就如同有著一個專屬於自己的指令歷史搜尋引擎一般!而這項功能確實可大幅度減少重新敲打那些又長又複雜指令之需要!
最後我們還不能忘掉「Tab 自動補全」功能——這項功能近乎神奇:試著隨便輸入某個目的或檔案名稱再按一下「Tab」鍵;Bash 則會幫忙自動完成整段名稱或者顯示所有可能補全結果供我們選擇——就像有一位私人助理幫我們完成句子一般!
總結而言:精通這些進階 Bash 與導航技巧將徹底改變您之前困難且瑣碎之終端機體驗;無論是利用 pushd 和 popd 來自由穿梭於不同資料夾間、透過 alias 創造便捷簡短之捷徑亦或是善加利用搜尋倒序功能與 tab 自動補全;所有技巧皆旨在讓您更加方便並迅速地瀏覽於您之系統中!所以下一次您開啟終端機時請記得回想起本篇文章提到之小撇步並看看您將多快速地遊走於您之環境中!
目前您應該已經熟悉並自信地掌握瞭如何導航於 Linux 檔案系統之基本架構;接下來我們將探討一些其他的內容。
檔案與目錄許可權管理
許可權概念
Linux 的許可權管理主要依賴於三種基本許可權型別:讀取(Read)、寫入(Write)和執行(Execute)。每一個檔案和目錄都有這三種許可權設定,分別針對三類別使用者:擁有者(Owner)、群組(Group)以及其他人(Others)。許可權通常以八進位制數字表示(如755),也可以以符號模式表示(如rwxr-xr-x)。
許可權設定指令
- chmod:修改檔案或目錄的許可權。
- chown:修改檔案或目錄的擁有者。
- chgrp:修改檔案或目録群組。
例如,要將某個檔案的許可權設為 rwxr-xr-- ,可以使用以下指令:
$ chmod 754 filename
或使用符號模式:
$ chmod u=rwx,g=rx,o=r filename
許可權範例解密:
擁有者許可權 (u)
u=rwx: 指定擁有者具有讀取、寫入和執行許可權。
群組許可權 (g)
g=rx: 指定群組成員具有讀取和執行許可權。
其他人許可權 (o)
o=r: 指定其他人僅具有讀取許可權。
特殊許可權
除了基本許可權外,Linux 還有一些特殊許可權:
- SUID:Set User ID upon execution。
- SGID:Set Group ID upon execution。
- Sticky Bit:適用於目錄。
例如,要設定 SUID 許可權給某個可執行檔案:
$ chmod u+s filename
內容解密:
SUID 許可權
SUID 的完整名稱為 Set User ID upon execution ,意味著當普通使用者執行該檔案時將暫時獲得該檔案擁有者之身份所擁有所有許可權;其中最典型例子即為 /usr/bin/passwd 指令:正常情況下只要一般使用者便可更新自己密碼卻不必享有 root 許可權。
SGID 許可權:
SGID 的完整名稱為 Set Group ID upon execution ,意味著當任何使用者執行該檔案時則暫時獲得同樣群組成員所有權力;最常見例子之一則為 /usr/bin/wall 指令:無論任何人均可傳送訊息至所有終端機螢幕上去(此情形之下亦必須擁有相關群組成員身分) 。
Sticky Bit 許可權:
Sticky Bit 主要應用於分享區域如 /tmp 或公共放置區等地方;代表即使非擁有者亦可進行寫入操作但仍無法刪除他人的檔案(只有擁有者才能刪除)。 要設定 sticky bit 的方式則如下:
$ chmod +t directoryname
總結而言:Linux 的権益管理機制相當靈活且強大並且其核心基礎即為三種基本權益型別以及三種主要使用者群體.透過適當搭配特殊權益型別即能達成高度安全性以及靈活性.
瞭解這些權益概念並熟練運用相關命令和設定將使得您更加得心應手地管理Linux系統中的檔案與資料夾.現在我們已經掌握了基本導航以及權益設定技巧.接下來我們將進一步探索其他高階主題.