# 檔案階層式架構
###### tags: `Linux` `FHS` `階層架構`
**根據資料的可分享性跟異動性分類**
1. 開機用的指令
* /bin (man1)
* /sbin (man8)
2. 系統正常運作要執行的指令 ==常用==
* /usr/bin
* /usr/sbin
3. 自行編譯的指令
* /usr/local/bin
* /usr/local/sbin
* openCV
4. 第三方軟體(免費) ==大量使用==
* /usr/local/軟體名稱/bin
* /usr/local/軟體名稱/sbin
* hadoop
* spark
5. 其他廠商授權軟體
* /opt/廠商/軟體名稱/bin
* /opt/廠商/軟體名稱/sbin
**顏色**
:::danger
紅底 : 會強制切換成root執行該++指令++,千萬不能執行。==會離職==
* SUID : Set UID
* passwd (修改密碼)
* 在檔案權限裡,owner會變成s
:::
:::warning
黃底 : 會切換成某個群組執行該**指令**,不會離職。
* SGID : Set GID
* 在檔案權限裡,group會變成s
:::
:::success
綠底 : 只有root跟owner可以刪除/更動該目錄,裡面的資料不會被誤刪
* SBIT : Sticky Bit
* /tmp
* 在檔案權限裡,other會變成t
:::
白字 : 一般檔案
深藍 : 目錄
綠字 : 執行檔
水藍 : 捷徑
紅字 : 壓縮檔
**圖示**
```shell=
______ _______
| | | |
| / |-----| /bin | 1
|______| | |_______|
| _______
| | |
|__| /sbin | 1
| |_______|
| _______ _______
| | | | |
|__| /usr |__| /bin | 2
| |_______| |_______|
| | _______
| | | |
| |______| /sbin | 2
| | |_______|
| | _______ _______
| | | | | |
| |______| /local|_____| /bin | 3
| |_______| | |_______|
| | _______
| | | |
| |__| /sbin | 3
| | |_______|
| | _________ _______
| | | | | |
| |__| /hadoop |_____| /bin | 4
| | |_________| | |_______|
| | | _______
| | | | |
| | |__| /sbin | 4
| | |_______|
| | _________ _______
| | | | | |
| |__| /spark |_____| /bin | 4
| |_________| | |_______|
| | _______
| | | |
| |__| /sbin | 4
| |_______|
| _______
| | |
|__| /opt | 5
|_______|
```
備註 :
usr : Unix Software Resource
---
# 重要目錄
1. 管理者目錄
* /root
2. 家目錄
* 一個人一個家,放任何東西都沒關係
* **不能用root身分**看別人家。==侵犯隱私,會離職==
* /home
* ~
* 個人設定檔
* ~/.profile
* 會呼叫 ==~/.bashrc==
* 所有的第三方設定檔都放這裡,最後被呼叫,會蓋掉共用設定檔
* ==hadoop,spark大量使用==
3. 系統設定檔
* 密碼,網路,檔案,設定檔...等都放這
* /etc
* 倉庫設定檔
* 裡面都放URL
1. 主倉庫設定檔
* /etc/apt/sources.list
2. 第三方倉庫設定檔
* /etc/apt/sources.list.d/
* MariaDB
* /etc/apt/source.list.d/mariadb.list
* 共用設定檔
* /etc/profile
1. 會呼叫/etc/bash.bashrc
2. 會呼叫 ==/etc/profile.d/*.sh==
* ==JAVA_HOME的PATH放這裡(openjdk8.sh)==
4. Unix Software Resource
* /usr
* /usr/share
* 與架構無關的資料或是文件說明都放這裡
* /usr/share/doc
* /usr/share/python3
5. 裝置
* /dev
* dev/null
* ==焚化爐==,好用
**圖示**
```shell=
______ _______
| | | |
| / |-----| /root |
|______| | |_______|
| _______ ____________
| | | | |
|__| /home |_____| /.profile | 個人設定檔
| |_______| | |____________|
| | |
| | | 呼叫
| | ______↓_____
| | | |
| |__| /.bashrc | 個人設定檔(最後被呼叫)
| |____________|
|
| _______ ____________ _________________
| | | | | | |
|__| /etc |_____| /apt |_____| /source.list | 主倉庫設定檔
| |_______| | |____________| | |_________________|
| | | _________________ ________
| | | | | | |
| | |__| /source/list.d |__| /*.list| 第三方倉庫設定檔
| | |_________________| |________|
| | ____________
| | | |
| |__| /profile |__ 共用設定檔
| | |____________| |
| | | |
| | | 呼叫 |
| | ______↓_____ |
| | | | | 呼叫
| |__|/bash.bashrc| |
| | |____________| |
| | ____________ | _______
| | | |←-| | |
| |__| /profile.d |_____| /*sh | JAVA_HOME的PATH放這裡(openjdk8.sh)
| |____________| |_______|
| _______ ____________ _______
| | | | | | |
|__| /usr |_____| /share |_____| /doc | 文件說明
| |_______| |____________| |_______|
| _______ ____________
| | | | |
|__| /dev |_____| /null | 焚化爐
|_______| |____________|
```
---
# 參考資料
* 鳥哥的私房菜
* [第五章、Linux 的檔案權限與目錄配置](http://linux.vbird.org/linux_basic/0210filepermission.php)
* [第六章、Linux 檔案與目錄管理](http://linux.vbird.org/linux_basic/0220filemanager.php)
* [檔案系統階層標準WIKI](https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%B1%82%E6%AC%A1%E7%BB%93%E6%9E%84%E6%A0%87%E5%87%86)