在 Linux 下所有的目錄以及子目錄所放置位置,都是依據 Filesystem Hierarchy Standard – http://www.pathname.com/fhs/ 的標準來存放.先來看看在 Linux 這樹狀圖有哪一些主要目錄,可以使用指令 #tree – https://benjr.tw/101444 來觀看.
每個版本的目錄架構會稍微不同.
CentOS7 x86_64
[root@localhost ~]# tree / -L 1 / ├── bin -> usr/bin ├── boot ├── dev ├── etc ├── home ├── lib -> usr/lib ├── lib64 -> usr/lib64 ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin -> usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var
CentOS5 x86_64
[root@localhost ~]# tree / -L 1 . |-- bin |-- boot |-- dev |-- etc |-- home |-- lib |-- lib64 |-- lost+found |-- media |-- mnt |-- opt |-- proc |-- quota |-- root |-- sbin |-- selinux |-- srv |-- sys |-- tftpboot |-- tmp |-- usr `-- var
在 Linux 的世界中不管是裝置還是一般文件都是以檔案的方式來呈現.不過所有的檔案可以區分為兩大類.
- shareable vs unshareable files
Shareable 的檔案除了 local 端可以存取連 remote 端的 Hosts 都可以存取,而 unshareable 的檔案就只限定 local 端可以存取比如 local 端的裝置檔案或是程序. - Variable vs. static files
Variable 的檔案像是文件或是設定檔,都可以隨時修改的.static 的檔案像是 binaries 的執行檔,除非從新編譯外是無法更動的.
現在我們來看看這些目錄下都裝了哪一類的檔案.
|– bin
/bin 裡面的執行檔包括了 cp , mkdir 等.可以讓 root 來維護修復系統所需要的相關指令等.
|– boot
這裡面存放著開機時所需的 Kernel 和 RamDisk 以及其設定檔,通常使用獨立的磁區來存放 boot 的資料.
|– dev
所有的 system 和 virtual 裝置檔都是存放在此,在 2.6.15 之後都是透過 udev 來建立移除 /dev/ 裡面的裝置.關於 udev 可以參考 https://benjr.tw/10632
/dev 的檔案可以區分為兩種 c (character) 只提供序列資料流的裝置如滑鼠鍵盤以及 modem 以及 b (block) 所有可以任意存取的裝置如硬碟等.
|– etc
所有的設定檔都可以在這裡面找到.
|– home
除了 root 的使用者的家目錄都存放在此.
|– lib
所有的執行檔所需的函式庫都是存放在這裡.
|– lib64
如果執行檔是 64 位元時其函式庫是存放在這裡.
|– lost+found
ext2 / ext3 特有的目錄,當檔案系統發生錯誤時其錯誤片段將存放於此.
|– media
如 CD / DVD , flash key, ZIP 等可以移除的裝置都會被掛載在此目錄下面.
|– mnt
僅提供給使用者暫時可掛載的目錄,如遠端的 NFS 等.
|– opt
非標準的程式如 third party 的程式皆歸位於此.
|– proc
這個目錄下的資訊都是和核心相關的資料.如 CPU 以及其他硬體的相關設定值.
|– root
root 使用者的家目錄.
|– sbin
放在 /sbin 裡面的執行檔都是在開機過程中所需要的,如 fdisk.
|– selinux
Security Enhanced Linux 的目錄,主要是針對檔案安全權限作加強的一套工具.
|– srv
用來存放 www , FTP , CVS 等檔案,但目前是空的.
|– sys
從 2.6 核心開始硬體的系統資訊以更階層式目錄的架構來存放,檔案內容類似於 /proc . https://benjr.tw/20857
|– tftpboot
tftp 所使用的目錄.常用於儲存網路開機 PXE 的檔案.
|– tmp
用來存放一些暫時的檔案.
|– usr
usr(Unix Software Resource) 主要就是存放軟體的資源,如核心的 source code 就是存放在 /usr/src/ 目錄下.
`– var
一些需要常更新的資料都會存放在此目錄下,如 web (/var/www/) ftp (/var/ftp) logs (/var/log) 等資料.
更多關於檔案屬性設定請參考:
- 預設的權限 – https://benjr.tw/160
- 特殊權限的設定 – https://benjr.tw/164
- ext2(3) 磁區檔案屬性 – https://benjr.tw/168
- ACL(Access Control Lists) – https://benjr.tw/172
- 硬式 Hard & 軟式 Soft 連結 – https://benjr.tw/166
One thought on “FHS – Filesystem Hierarchy Standard”