FHS

May 23, 2018

FHS とは

FHS (Filesystem Hierarchy Standard) は Linux におけるファイルシステム内のレイアウトのデファクトスタンダードである。
ルートファイルシステムはディレクトリ階層の中で最上位に位置し、そこに含まれていなければいけないディレクトリは /bin、/sbin、/etc、/dev、/lib となる。

/bin

基本的なコマンドが配置される。このディレクトリにあるコマンドは一般ユーザーでも実行可能。

$ ls /bin/  
arch        cgexec      cpio                  dbus-uuidgen   ed       gawk          kbd_mode  lsblk     mountpoint     ps        rpm        sort       tracepath6     unlink  
awk         cgget       cut                   dd             egrep    grep          keyctl    lscgroup  mv             pwd       rvi        stty       traceroute     usleep  
basename    cgset       dash                  df             env      gtar          kill      lssubsys  nano           raw       rview      su         traceroute6    vi  
bash        cgsnapshot  date                  dmesg          ex       gunzip        link      mkdir     netstat        readlink  sed        sync       true           view  
cat         chgrp       dbus-cleanup-sockets  dnsdomainname  false    gzip          ln        mknod     nice           red       setfont    tar        umount         ypdomainname  
cgclassify  chmod       dbus-daemon           domainname     fgrep    hostname      loadkeys  mktemp    nisdomainname  rm        setserial  taskset    uname          zcat  
cgcreate    chown       dbus-monitor          dumpkeys       find     ipcalc        login     more      ping           rmdir     sh         touch      unicode_start  
cgdelete    cp          dbus-send             echo           findmnt  iptables-xml  ls        mount     ping6          rnano     sleep      tracepath  unicode_stop  

/sbin

システム管理に必須のコマンドが配置される。

$ ls /sbin/  
accton          chkconfig        ebsnvme-id    getkey             iptables          lvmdump           mkinitrd             pvcreate          routel      sushell       vgimport  
addpart         clock            ec2ifdown     grub               iptables-restore  lvmetad           mkswap               pvdisplay         rpcbind     swapoff       vgimportclone  
agetty          consoletype      ec2ifscan     grubby             iptables-save     lvmpolld          modinfo              pvmove            rpc.statd   swapon        vgmerge  
arp             cryptsetup       ec2ifup       grub-crypt         iptunnel          lvmsadc           modprobe             pvremove          rrestore    switch_root   vgmknodes  
arping          ctrlaltdel       ec2udev-vbd   grub-install       key.dns_resolver  lvmsar            mount.nfs            pvresize          rsyslogd    sysctl        vgreduce  
audispd         debugfs          ec2udev-vcpu  grub-md5-crypt     killall5          lvreduce          mount.nfs4           pvs               rtmon       tc            vgremove  
auditctl        delpart          ether-wake    grub-terminfo      kpartx            lvremove          nameif               pvscan            rtpr        telinit       vgrename  
auditd          depmod           ethtool       halt               ldconfig          lvrename          netreport            pwhistory_helper  runlevel    tune2fs       vgs  
augenrules      dhclient         faillock      hwclock            load_policy       lvresize          new-kernel-pkg       quotacheck        runuser     udevadm       vgscan  
aureport        dhclient-script  fdisk         ifcfg              logsave           lvs               nologin              quotaoff          securetty   udevd         vgsplit  
  
...  
  

/etc

システムやアプリケーションの設定情報、スクリプトファイルなどが配置される。

/dev

ハードディスクや CD-ROM などのデバイスファイルが配置される。デバイスファイルは特殊ファイルであり、デバイスに応じたデバイスファイルが必要。

/lib

共有ライブラリやカーネルモジュールが配置される。とりわけ /bin /sbin にあるコマンドが必要とされるライブラリはここに配置される。

/media

DBD-ROM などのリムーバブルメディアのマウントポイントが配置される。

/mnt

一時的にマウントするファイルシステムのマウントポイントが配置される。

/opt

パッケージ管理の仕組みを使ってプログラムがインストールされるディレクトリ。ディストリビューションによっては配置されない。

/proc

カーネル内部の情報にアクセスするための仮想的なファイルシステム。実際にはディスク上には存在しない。

/root

スーパーユーザー root のホームディレクトリ。/home ファイルシステムがマウントできなくなってもメンテナンスができるように /home とは別になっている。

/boot

起動に必要な設定やカーネルイメージが配置される。起動時に BIOS の制限を受けないようにするため、ルートファイルシステムとは別に、ディスクの先頭付近に配置されることがある。

/home

ユーザーごとのホームディレクトリが配置される。独立したファイルシステムにすることにより、クォータを設定できたり、保守性を向上させたりできる。

/tmp

一時ファイルが配置される。全てのユーザーが読み書きできる。

/var

ログファイル、メールやプリンタのスプールなど、頻繁に書き換えられるファイルが配置される。

  • /var/cache: man コマンドで表示するために整形したデータなど、一時的なキャッシュファイルが配置される。
  • /var/lock: アプリケーションが排他制御に使うためのロックファイルが配置される。
  • /var/log: ログファイルが書き出される。
  • /var/run: システムの状態を示すファイルが配置される。PID ファイルなど。
  • /var/spool: 印刷待ちのデータや予約されたジョブなど、処理待ちデータが配置される。

/usr

コマンドやユーティリティなどが配置される。

  • /usr/bin: ユーザーが一般的に使うコマンドで、緊急時のシステム保守に必須ではないコマンドはここに配置される。
  • /usr/sbin: システム管理コマンドで、緊急時のシステム保守に必須ではないコマンドはここに配置される。
  • /usr/lib: プログラムに必要な共有ライブラリが配置される。
  • /usr/local: ローカルシステムで必要とされるコマンドやライブラリ、ドキュメントが配置される。
  • /usr/share: x86 や x86_64 といったシステムアーキテクチャに依存しないファイルが配置される。
  • /usr/src: Linux のカーネルソースなどのソースコードが配置される

 © 2023, Dealing with Ambiguity