Linux_FHS目錄做用分析

總目錄概覽

目錄 英文全名 用途
/bin Binaries 用於存放最經常使用的二進制命令
/boot Boot 包含引導Linux的重要文件,如grub和內核文件等
/dev Devices 全部設備都在該目錄下,包括硬盤和顯示器等
/etc etc 系統的全部配置文件都放在它下面
/home Home 存放個用戶的家目錄($HOME)及其文件和配置
/lib Libraries 系統的庫文件,有點像Windows的Program Files
/lost+found lost+found 用於存放系統異常時丟失的文件(如忽然宕機),以利於恢復
/media Media 用於加載各類媒體,如光盤、軟盤等
/mnt Mount 用於加載各類文件系統
/opt Optionally 用於存放安裝的「可選」程序
/proc Processes 包含進程等信息,是內存的映射,不是真實目錄
/root Root 該目錄是root用戶的家目錄($HOME)
/run Run 該目錄是是系統每次重啓時生成的tmpfs,其真正的連接是/var/run
/sbin System-only binaries 用於存放系統專用的二進制命令
/srv Service 服務啓動以後須要訪問的數據目錄
/sys System 用於存放系統信息
/tmp Temporary files 用於存放臨時文件
/usr User 用於存放普通用戶的應用程序、庫文件和文檔等
/var Variable files 用於存放那些在時間、大小、內容上會常常變化的文件

/bin目錄

注意:
文件權限除了html

  • r:4
  • w:2
  • x:1

外,還有:linux

  • SUID:4
  • SGID:2
  • SBIT:1

SUID

(1)SUID權限僅對二進制程序有效;
(2)執行者對於該程序須要具備x的可執行權限;
(3)本權限僅在執行該程序的過程當中有效;
(4)執行者將具備該程序全部者的權限。shell

SGID

對二進制程序:
(1)SGID對二進制程序有用;
(2)程序執行者對該程序需具有x權限;
(3)執行者在執行過程當中會得到該程序用戶組的支持。
對目錄:
(1)用戶若對此目錄具備r和x權限,該用戶可以進入該目錄;
(2)用戶在此目錄下的有效用戶組將變成該目錄的用戶組;
(3)若用戶在此目錄下擁有w權限,則用戶所建立的新文件的用戶組與該目錄的用戶組相同。數據庫

SBIT

SBIT目前只對目錄有效。
SBIT對目錄的做用是:
(1)當用戶對此目錄具備w和x權限時,即具備寫入權限時;
(2)當用戶在該目錄下建立新文件或目錄時,僅有本身和root纔有權力刪除。ubuntu

文件夾 文件 用途
/bin ... man command

/boot目錄

文件夾 文件 用途
/boot vmlinuz-3.10.0-957.el7.x86_64 內核文件
/boot initramfs-3.10.0-957.el7.x86_64.img
initramfs是改進版的tmpfs,不只能夠交換分區,還能夠設定一個tmpfs裝載點的最大尺寸以避免耗盡內存
/boot System.map-3.10.0-957.el7.x86_64 特定內核的內核符號表,是當前運行的內核的System.map的連接
/etc/grub 引導裝置配置文件

如須瞭解更多,請點擊:/boot目錄介紹數組

/dev目錄

文件夾 文件 用途
/dev console 系統控制檯,也就是直接和系統連接的監視器
/dev fd 軟驅設備驅動程序
/dev null 「黑洞」,全部寫入該設備的信息都將會消失
/dev sda scsi硬盤驅動程序接口
/dev tty 提供虛擬控制檯支持
/dev ttys 計算機串行接口
/dev pty 提供遠程登錄僞終端支持

/etc目錄

文件夾 文件 用途
/etc aliases,aliases.db alias給命名指定別名
/etc/alternatives 只能在root權限下執行,經常使用於同一個系統中安裝同一軟件的多個版本
/etc/audit,/etc/audisp audit能夠將(用戶空間)審計記錄寫入日誌文件,包括記錄系統調用和文件訪問。管理員能夠檢查這些日誌,肯定是否存在安全漏洞
/etc/cloud 當系統啓動時,cloud-init可從nova metadata服務或者config drive中獲取metadata,完成一些定製化工做,如設置default locale、設置hostname、添加ssh key、設置用戶密碼、配置網絡和安裝軟件包等
/etc crypttab 用於描述在系統啓動過程當中建立的加密塊設備(加密卷)
/etc csh.cshrc,csh.login,profile 登陸或啓動時bourne或Cshell執行的文件,這容許系統管理員爲全部用戶創建全局缺省環境,裏面 能夠添加對全部用戶有效的環境變量、系統配置等
/etc/depmod.d depmod:分析可加載模塊的依賴性,生成modules.dep文件和映射文件;lsmod:列出內核已載入模塊的狀態;modprobe:內核添加刪除模塊;modinfo:顯示內核模塊的信息;insmod:向內核中插入一個模塊;rmmod:刪除內核中的一個模塊
/etc dracut.conf dracut用於製做initrd啓動鏡像文件,dracut-network會爲鏡像內添加nfs等網絡支持
/etc e2fsck.conf e2fsck爲磁盤修復命令,如忽然斷電後可能產生磁盤壞道,使用該命令進行磁盤修復
/etc exports NFS的配置文件
/etc fstab 指定啓動時須要自動安裝的文件系統列表,也包括用sapon -a啓用的swap區的信息
/etc GeoIP.conf GeoIP是一套含IP數據庫的軟件工具,Geo會根據來訪者的IP,定位該IP所在經緯度、國家/地區、省市和街道等位置信息。由於GeoIP賭氣的是本地的二進制IP數據庫,因此效率很高,比從APNIC讀取再轉高不少
/etc groff groff命令把標準的文本和特殊的命令翻譯成格式化的輸出
/etc idmapd.conf 這是一個libnfsidmap的排位置文件,由idmapd和svcgssd將NFSv4的名稱映射到ids
/etc inittab init的配置文件
/etc inputrc 用於告知系統應該以怎樣的鍵盤佈局處理鍵盤
/etc issue 包含用戶在登陸提示符前的輸出信息。一般包括系統的一段短說明或歡迎信息,具體內容由系統管理員肯定
/etc kdump.conf kdump 是一種先進的基於 kexec 的內核崩潰轉儲機制。當系統崩潰時,kdump 使用 kexec 啓動到第二個內核。第二個內核一般叫作捕獲內核,以很小內存啓動以捕獲轉儲鏡像。第一個內核保留了內存的一部分給第二內核啓動用。因爲 kdump 利用 kexec 啓動捕獲內核,繞過了 BIOS,因此第一個內核的內存得以保留。這是內核崩潰轉儲的本質。因爲可以分析核心轉儲顯著有助於肯定系統故障的確切緣由,強烈建議啓用此功能。kdump 須要兩個不一樣目的的內核,這兩個內核被稱爲kdump kernel,生產內核和捕獲內核。生產內核是捕獲內核服務的對像。捕獲內核會在生產內核崩潰時啓動起來,與相應的 ramdisk 一塊兒組建一個微環境,用以對生產內核下的內存進行收集和轉存
/etc krb5.conf Kerberos的配置文件,Kerberos協議主要用於計算機網絡的身份鑑別(Authentication),其特色是用戶只需輸入一次身份驗證信息就能夠憑藉此雅正得到的票據(ticket-granting ticket)訪問多個服務
/etc ld.so.conf 此文件記錄了編譯時使用的動態庫的路徑,也就是加載so庫的路徑。默認狀況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件,而一般經過源碼包進行安裝時,若是不指定--prefix會將庫安裝在/usr/local目錄下,而又沒有在文件/etc/ld.so.conf中添加/usr/local/lib這個目錄>。這樣雖然安裝了源碼包,可是使用時仍然找不到相關的.so庫,就會報錯。也就是說系統不知道安裝了源碼包
/etc locale.conf 用於全系統範圍的本地化(locale)設置
/etc login.defs login命令的配置文件
/etc logrotate.conf logrotate程序是一個日誌管理工具,能夠「轉儲」,壓縮日誌,發送至指定e-mail
/etc machine-id 包含一個在安裝或首次啓動操做系統時生成的,專屬於本系統的、獨一無二的「machine ID」
/etc magic "file"配置文件,包含不一樣文件格式的說明,"file"基於它猜想文件類型
/etc mke2fs.conf mkesfs用於在磁盤分區上建立ext二、ext三、ext4文件系統,默認狀況下會建立ext2
/etc motd motd是message of the day的縮寫,用戶成功登陸後自動輸出。內容由系統管理員肯定。經常使用於通告系信息,如計劃關機時間的警告等
/etc mtab 當前安裝的文件系統列表。由腳本(scritp)初始化,並由mount命令自動更新。當須要一個當前安裝的文件系統的列表時使用(例如df命令)
/etc my.cnf MySQL的配置文件
/etc netconfig 該文件描述了主機上的全部傳輸協議
/etc networks 它用在IP範圍和網絡名稱之間轉換,它用於像Netstat和路由這樣的工具,它只在A類、B類或C類網絡上工做,它不在子網上工做
/etc nsswitch 服務搜索順序
/etc/openldap LDAP是輕量目錄訪問協議(Lightweight Directory Access Protocol)的縮寫,它是一個爲查詢、瀏覽和搜索而優化的專業分佈式數據庫。目錄數據庫和關係數據庫不一樣,它有優異的讀性能,但寫性能差,而且沒有事務處理、回滾等複雜功能,不適於存儲修改頻繁的數據。因此目錄天生是用來查詢的,就好象它的名字同樣
/etc os-release,*-release 用於查看系統版信息
/etc ovirt-guest-agent.conf oVirt(Open Virtualization)是相似於VMware的vSphere,基於KVM(Kernel-based Virtual Machine)虛擬化技術的開源IaaS雲服務解決方案
/etc/pam.d PAM模塊的配置文件,重要
/etc passwd 用戶數據庫,其中的域給了用戶名、真實姓名、用戶起始目錄、加密口令和用戶的其餘信息
/etc/pkcs11 pam-pkcs 11是一個pam(可插入身份驗證模塊)插件,它容許登陸到unix/linux系統,經過使用存儲在智能卡中的數字證書來支持pam
/etc polkit-1 polkit 是一個應用程序級別的工具集,經過定義和審覈權限規則,實現不一樣優先級進程間的通信:控制決策集中在統一的框架之中,決定低優先級進程是否有權訪問高優先級進程
/etc/popt popt 庫的存在,主要是爲了解析命令行選項,它不使用全局變量,所以能夠並行解析argv;它能夠解析任意的argv風格的元素數組,能夠解析來自任何源文件的命令行字符串(ps:估計是命令行字符串參數可保存在文件中,程序經過導入配置文件解析得到參數);它提供了一個使用選項別名的標準方法;它能夠執行外部選項過濾器;最後,它可以自動生成程序的help和usage信息
/etc/postfix Postfix是一個郵件傳輸客戶端(MTA),它也是ubuntu種默認的郵件傳輸客戶端
/etc/ppp if-up,if-down,peers 有關網絡接口的設置
/etc prlink.conf.d Prelink利用事先連接代替運行時連接的方法來加速共享庫的加載,它不只能夠加快起動速度,還能夠減小部份內存開銷,是各類 Linux 架構上用於減小程序加載時間、縮短系統啓動
/etc printcap printcap數據庫是用於描述打印機的termcap數據庫的簡化版本。每次使用時,後臺系統都會訪問printcap文件,所以您能夠動態添加或刪除打印機。數據庫中的每一個條目都描述了一個打印機
/etc protocols 包含有關DARPA網絡中使用的已知協議的信息
/etc/qemu-ga qga是一個運行在虛擬機內部的普通應用程序(可執行文件名稱默認爲qemu-ga,服務名稱默認爲qemu-guest-agent),其目的是實現一種宿主機和虛擬機進行交互的方式,這種方式不依賴於網絡,而是依賴於virtio-serial(默認首選方式)或者isa-serial,而QEMU則提供了串口設備的模擬及數據交換的通道,最終呈現出來的是一個串口設備(虛擬機內部)和一個unix socket文件(宿主機上)。qga經過讀寫串口設備與宿主機上的socket通道進行交互,宿主機上可使用普通的unix socket讀寫方式對socket文件進行讀寫,最終實現與qga的交互,交互的協議與qmp(QEMU Monitor Protocol)相同(簡單來講就是使用JSON格式進行數據交換),串口設備的速率一般都較低,因此比較適合小數據量的交換
/etc/rc.d rc.d詳解
/etc request-key.conf 當內核被請求要一個它沒有當即可用的鍵時,這個程序就會被內核調用。內核建立一個部分設置的鍵,而後調用這個程序來實例化它,並不打算直接調用它
/etc resolv.conf DNS客戶機配置文件,設置DNS服務器的IP地址及DNS域名
/etc/rhsm rhsm是Red Hat Subscription Manager的縮寫
/etc/rpm rpm是Red-Hat Package Manager的縮寫
/etc rsyncd.conf Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件,也可使用 Rsync 同步本地硬盤中的不一樣目錄。請參考rsync詳解
/etc rsyslog.conf rsyslog 是一個 syslogd 的多線程加強版。rsyslog負責寫入日誌, logrotate負責備份和刪除舊日誌, 以及更新日誌文件
/etc/sasl2 SMTP服務的配置文件
/etc securetty 該文件容許你規定"root"用戶能夠從哪一個tty設備登陸,登陸程序(一般是/bin/login)須要讀取"/etc/securetty"文件
/etc/security limits.conf 該文件限制着用戶可使用的最大文件數,最大線程,最大內存等資源使用量,也可以使用"ulimit"命令查看
/etc/selinux SELinux是個通過安全強化的Linux操做系統
/etc services 該文件包含網絡服務和它們映射端口的列表。inetd 或 xinetd 會查看這些細節,以便在數據包到達各自的端口或服務有需求時,它會調用特定的程序
/etc sestatus.conf sestatus工具用於獲取運行selinux系統的狀態。該文件由sestatus命令與-v選項一塊兒使用,以肯定應顯示什麼文件和進程安全上下文
/etc shadow 在安裝了影子(shadow)口令軟件的系統上的影子口令文件。影子口令文件將/etc/password文件中的加密口令移動到/etc/shadow中,然後者只對超級用戶(root)可讀。這使破譯口令更困難,以此增長系統的安全性
/etc shells 記錄當前系統支持的shell環境
/etc/skel 該目錄是用來存放新用戶配置文件的目錄,當咱們添加新用戶的時候,這個目錄下的全部文件會自動被複制到新添加的用戶的家目錄下。這個目錄下的全部文件都是隱藏文件(以.點開頭的文件)經過修改、添加、刪除/etc/skel目錄下的文件,咱們可爲新建立的用戶提供統一的、標準的、初始化用戶環境
/etc/ssl SSL證書
/etc/systemd systemd是Linux系統最新的初始化系統(init),做用是提升系統的啓動速度,儘量啓動較少的進程,儘量更多進程併發啓動。systemd對應的進程管理命令是systemctl
/etc/terminfo Terminfo 已經永久取代了Termcap ,但爲了兼容性,一些Unix仍然擁有Termcap文件。Linux系統將每種終端類型的terminfo數據做爲一個單獨的文件存儲在terminfo數據庫目錄
/etc/tuned Linux性能優化特性Tuned和ktune,Tuned本質上是一個Linux環境中的後臺進程,在運行過程當中依據配置內容監控調整系統。監控程序會根據監控的配置內容,監控進程會持續監控結果反饋,調整優化策略。Ktune進程是在Red Hat 5.3引入的一項架構服務內容,爲一些特定的用例場景來優化進程
/etc vconsole.conf 文件被 udev 規則 90-vconsole.rules 用來配置虛擬控制檯的鍵盤映射與字體。 若是你不想以這種方式初始化控制檯的設置,那麼能夠安全的屏蔽 90-vconsole.rules 文件
/etc virc vi編輯器配置文件
/etc/wpa_supplicant wpa_supplicant是linux系統下一個很是強大的無線網卡管理程序
/etc/X11 目前Ubuntu使用的X server
/etc/xdg xdg自動啓動規範定義了一種在桌面環境啓動和可移動介質安裝上自動啓動普通桌面條目的方法,方法是將它們放置在特定的目錄下
/etc xinetd.d 在Linux系統中有一個超級服務程序inetd,大部分的網絡服務都是由它啓動的,如chargen、echo、finger、talk、telnet、wu-ftpd等,在舊版本它的設置是在/etc/inetd.conf中配置的。在新版本,它就改爲了一個xinetd.d目錄。在xinetd.d目錄中,每個服務都有一個相應的配置文件

/home目錄

文件夾 文件 用途

/lib目錄

文件夾 文件 用途

/lost+found目錄

文件夾 文件 用途

/media目錄

文件夾 文件 用途

/mnt目錄

文件夾 文件 用途

/opt目錄

文件夾 文件 用途

/proc目錄

文件夾 文件 用途

/root目錄

文件夾 文件 用途

/run目錄

根據linux的文件系統分層結構標準(FHS)中的定義:安全

  • /var/run 目錄中存放的是自系統啓動以來描述系統信息的文件。
  • 比較常見的用途是daemon進程將本身的pid保存到這個目錄。
  • 標準要求這個文件夾中的文件必須是在系統啓動的時候清空,以便創建新的文件。

爲了達到這個要求,linux中/var/run使用的是tmpfs文件系統,這是一種存儲在內存中的臨時文件系統,當機器關閉的時候,文件系統天然就被清空了。使用df -Th命令能看到相似的輸出結果:性能優化

# df -Th /var/run
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs  2.0G  9.0M  2.0G   1% /run

從該輸出結果可看出,/var/root是一個tmpfs文件系統,而且它被掛載到/run目錄下
固然,/var/run除了保存進程的pid以外也有其餘的做用,好比utmp文件,就是用來記錄機器的啓動時間以及當前登錄用戶的。服務器

爲何要使用/run代替
這是由於/var/run文件系統並非在系統一啓動就是就緒的,而在此以前已經啓動的進程就先將本身的運行信息存放在/dev中,/dev一樣是一種tmpfs,並且是在系統一啓動就可用的。可是/dev設計的本意是爲了存放設備文件的,而不是爲了保存進程運行時信息的,因此爲了避免引發混淆,/dev中存放進程信息的文件都以」.」開始命名,也就是都是隱藏文件夾。可是即使是這樣,隨着文件夾的數量愈來愈多,/dev裏面也就愈來愈混亂,終於有人坐不住了,因此引入了替代方案,也就是 /var/run。網絡

使用/var/run有什麼好處
主要就是解決了上邊說的管理不一致,最終使各個發行版統一管理。最終將/var/run和/var/lock都歸併到/run中。並且在也不用使用隱藏文件夾這種伎倆了,對管理員來講輕鬆了很多。一樣/dev中也不會有不相關的內容了。

文件夾 文件 用途
/run *.pid 保存進程的pid
/run *.sock 生成進程的socket
/run *.lock 生成進程的互斥鎖
/run utmp 記錄機器的啓動時間以及當前登錄用戶
/run/dbus 數據總線,是一個低延時、低開銷、高可用性的ipc機制。目前dbus已被大多數Linux發行版所採用,開發者可以使用D-Bus實現各類複雜的進程間通訊任務
/run/systemd 系統初始化過程當中包含的Units
/run/udev (用戶模式)設備文件管理工具

/sbin目錄

文件夾 文件 用途

/srv目錄

文件夾 文件 用途

/sys目錄

文件夾 文件 用途

/tmp目錄

文件夾 文件 用途

/usr目錄

文件夾 文件 用途

/var目錄

文件夾 文件 用途
相關文章
相關標籤/搜索