BSD File Structure
What goes where and why.. (FreeBSD 5.2.1)
Posted 19.02.2006 | Updated 23.05.2006 | Contributed by Andy Mallett


To the Unix neophyte, used to the Windows file system, the file and directory structure of a Unix box can seem perplexing and odd.

One thing to remember is that compared to MS Windows, Unix is rather quirky, for instance in the way that it seems to treat everything as a file. However, herein lies its power and ease of configuration.

The structure of the file system varies slightly from one distribution to another, however there are more similarities than differences.

The structure and function of the FreeBSD file hierarchy is shown by typing the man hier command..
HIER(7) 	   FreeBSD Miscellaneous Information Manual	       HIER(7)

NAME
	hier -- layout of file systems

DESCRIPTION
	A sketch of the file system hierarchy.


 /		root directory of the file system

 /bin/	user utilities fundamental to both single-user and multi-user
	environments

 /boot/	programs and configuration files used during operating system
	bootstrap

	defaults/  default bootstrapping configuration files; see
		   loader.conf(5)
	kernel/    pure kernel executable (the operating system loaded
		   into memory at boot time).
	modules/   third-party loadable kernel modules; see kldstat(8)

 /cdrom/	default mount point for CD-ROM drives (created by
	sysinstall(8))

 /compat/	normally a link to /usr/compat.  If not, then the /usr/compat
	comments apply (created by sysinstall(8))

 /dev/	device special files managed by devfs(5)

	fd/   file descriptor files; see fd(4)
	net/  network devices

 /dist/	mount point used by sysinstall(8)

 /etc/	system configuration files and scripts

	defaults/  default system configuration files; see rc(8)
	gnats/	   gnats configuration files; see send-pr(1)
	isdn/	   isdn4bsd configuration files; see isdnd(8)
	localtime  local timezone information; see ctime(3)
	mail/	   Sendmail control files
	mtree/	   mtree configuration files; see mtree(8)
	namedb/    named configuration files; see named(8)
	pam.d/	   configuration files for the Pluggable Authentica-
		   tion Modules (PAM) library; see pam(8)
	periodic/  scripts that are run daily, weekly, and monthly,
		   via cron(8); see periodic(8)
	ppp/	   ppp configuration files; see ppp(8)
	ssl/	   OpenSSL configuration files

/lib/	critical system libraries needed for binaries in /bin and /sbin

geom/  class-specific libraries for the geom(8) utility

/libexec/   critical system utilities needed for binaries in /bin and /sbin

/mnt/	empty directory commonly used as a temporary mount point

/proc/	process file system; see mount_procfs(8)

/rescue/	statically linked programs for emergency recovery; see rescue(8)

/root/	root's HOME directory

/sbin/	system programs and administration utilities

/stand/	programs used in a standalone environment

/tmp/	temporary files that are not guaranteed to persist across sys-
tem reboots

/usr/	contains the majority of user utilities and applications

	bin/	  common utilities, programming tools, and applica-
		  tions
	compat/   files needed to support binary compatibility with
		  other operating systems, such as Linux (created by
		  sysinstall(8))
	games/	  useful and semi-frivolous programs
	include/  standard C include files

		  altq/       C include files for alternate queueing
		  arpa/       C include files for Internet service
				  protocols
		  bsnmp/      C include files for the SNMP daemon
		  c++/	      C++ include files
		  cam/	      C include files for the Common Access
				  Methods Layer
				  scsi/	  The SCSI device on top of
					  CAM
		  dev/	      C include files for programming various
				  FreeBSD devices
				  ic/	  Various header files
					  describing driver- and bus-
					  independent hardware cir-
					  cuits
				  ofw/	  Open Firmware support
				  pbio/	  8255 PPI cards; see pbio(4)
				  ppbus/	  The parallel port bus; see
					  ppbus(4)
				  usb/	  The USB subsystem
				  utopia/	  Physical chip driver for ATM
					  interfaces; see utopia(4)
				  wi/	  The wi(4) WaveLAN driver
		  fs/
				  fdescfs/ per-process file descriptors
				  fifofs/	  IEEE Std 1003.1
					  (``POSIX.1'') FIFOs file
					  system
				  msdosfs/	  MS-DOS file system
				  ntfs/	  NTFS file system
				  nullfs/	  loopback file system
				  nwfs/	  NetWare file system
				  portalfs/   portal file system
				  procfs/	  process file system
				  smbfs/	  SMB/CIFS file system
				  udf/	  UDF file system
				  umapfs/	  alternate uid/gid mappings
					  file system
				  unionfs	  union file system
		  geom/       GEOM framework
				  concat/	  CONCAT GEOM class
				  gate/	  GATE GEOM class
				  mirror/	  MIRROR GEOM class
				  nop/	  NOP GEOM class
				  raid3/	  RAID3 GEOM class
				  stripe/	  STRIPE GEOM class

		  isc/	      ISC utility library libisc include files
		  isofs/
				  cd9660/	  iso9660 file system
		  libmilter/  C include files for libmilter, the
				  sendmail(8) mail filter API
		  machine/    machine-specific C include files
		  net/	      miscellaneous network C include files
		  netatalk/   Appletalk protocol
		  netatm/     ATM include files; see atm(8)
		  netinet/    C include files for Internet standard
				  protocols; see inet(4)
		  netinet6/   C include files for Internet protocol
				  version 6; see inet6(4)
		  netipx/     IPX/SPX protocol stacks
		  netkey/     kernel key-management service
		  netnatm/    NATM include files; see natm(4)
				  api/	  include files for the sig-
					  nalling API
				  msg/	  include files that describe
					  signalling messages and
					  declare associated functions
				  saal/	  include files for the sig-
					  nalling AAL layer
				  sig/	  include files for the UNI
					  signalling protocol
		  netsmb/     SMB/CIFS requester
		  nfs/	      C include files for NFS (Network File
				  System)
		  objc/       Objective C include files
		  openssl/    OpenSSL (Cryptography/SSL toolkit) head-
				  ers
		  pccard/     PC-CARD controllers
		  posix4/     POSIX real-time extensions includes; see
				  p1003_1b(9)
		  protocols/  C include files for Berkeley service
				  protocols
		  readline/   get a line from a user, with editing;
				  see readline(3)
		  rpc/	      remote procedure calls; see rpc(3)
		  rpcsvc/     definition of RPC service structures;
				  see rpc(3)
		  security/   PAM; see pam(8)
		  sys/	      system C include files (kernel data
				  structures)
		  ufs/	      C include files for UFS (The U-word File
				  System)
				  ffs/	  Fast file system
				  ufs/	  UFS file system
		  vm/	      virtual memory; see vmstat(8)

	lib/	  shared and archive ar(1)-type libraries
		  aout/       a.out archive libraries
		  compat/     shared libraries for compatibility
				  aout/	  a.out backward compatibility
					  libraries

	libdata/  miscellaneous utility data files
		  gcc/	      gcc(1) configuration data
		  ldscripts/  linker scripts; see ld(1)
		  lint/       various prebuilt lint libraries; see
				  lint(1)

	libexec/  system daemons & system utilities (executed by other
		  programs)
		  aout/       utilities to manipulate a.out executa-
				  bles
		  elf/	      utilities to manipulate ELF executables
		  lpr/	      utilities and filters for LP print sys-
				  tem; see lpr(1)
		  sendmail/   the sendmail(8) binary; see
				  mailwrapper(8)
		  sm.bin/     restricted shell for sendmail(8); see
				  smrsh(8)

	local/	  local executables, libraries, etc.  Also used as the
		  default destination for the FreeBSD ports framework.
		  Within local/, the general layout sketched out by
		  hier for /usr should be used.  Exceptions are the
		  man directory (directly under local/ rather than
		  under local/share/), ports documentation (in
		  share/doc/<port>/), and /usr/local/etc (mimics
		  /etc).
	obj/	  architecture-specific target tree produced by build-
		  ing the /usr/src tree
	ports/	  The FreeBSD ports collection (optional).
	sbin/	  system daemons & system utilities (executed by
		  users)
	share/	  architecture-independent files

		  calendar/  a variety of pre-fab calendar files; see
				 calendar(1)
		  dict/      word lists; see em>look(1)

				 freebsd	 FreeBSD-specific terms,
					 proper names, and jargon
				 words	 common words
				 web2	 words from Webster's 2nd
					 International
				 papers/	 reference databases; see
					 refer(1)

		  doc/	     miscellaneous documentation; source for
				 most of the printed BSD manuals (avail-
				 able from the USENIX association)
				 FAQ/	 Frequently Asked Questions
				 IPv6/	 implementation notes for IPv6
				 bind/	 documents pertaining to BIND
					 (the Berkeley Internet Name
					 Domain)
				 es/	 Spanish translations of docu-
					 ments in /usr/share/doc
				 handbook/	 FreeBSD Handbook
				 ja/	 Japanese translations of doc-
					 uments in /usr/share/doc
				 ncurses/	 HTML documents pertaining to
					 ncurses; see ncurses(3)
				 ntp/	 HTML documents pertaining to
					 the Network Time Protocol
				 papers/	 UNIX Papers
				 psd/	 UNIX Programmer's Supplemen-
					 tary Documents
				 ru/	 Russian translations of docu-
					 ments in /usr/share/doc
				 smm/	 UNIX System Manager's Manual
				 tutorials/  FreeBSD tutorials
				 usd/	 UNIX User's Supplementary
					 Documents
				 zh/	 Chinese translations of docu-
					 ments in /usr/share/doc

		  examples/  various examples for users and program-
				 mers
		  games/     ASCII text files used by various games
		  groff_font/
				 device description file for device name
		  info/      GNU Info hypertext system
		  isdn/      ISDN
		  locale/    localization files; see setlocale(3)
		  man/	     manual pages
		  me/	     macros for use with the me macro package;
				 see me(7)
		  misc/      miscellaneous system-wide ASCII text
				 files
				 fonts/	 ???
				 pcvtfonts/  pcvt fonts; see pcvt(4)
				 termcap	 terminal characteristics
					 database; see termcap(5)
		  mk/	     templates for make; see make(1)
		  nls/	     national language support files; see
				 mklocale(1)
		  pcvt/      pcvt documentation and etc examples; see
				 pcvt(4)
		  security/  data files for security policies such as
				 mac_lomac(4)
		  sendmail/  sendmail(8) configuration files
		  skel/      example . (dot) files for new accounts
		  snmp/      MIBs, example files and tree definitions
				 for the SNMP daemon.
				 defs/	 Tree definition files for use
					 with gensnmptree(1)
				 mibs/	 MIB files
		  syscons/   files used by syscons; see syscons(4)
				 fonts/	console fonts; see
					vidcontrol(1) and vidfont(1)
				 keymaps/	console keyboard maps; see
					kbdcontrol(1) and kbdmap(1)
				 scrnmaps/	console screen maps
		  tabset/    tab description files for a variety of
				 terminals; used in the termcap file; see
				 termcap(5)
		  tmac/      text processing macros; see nroff(1) and
				 troff(1)
		  vi/	     localization support and utilities for
				 vi(1)
		  zoneinfo/  timezone configuration information; see
				 tzfile(5)
	src/	  BSD, third-party, and/or local source files

		  bin/	      source code for files in /bin
		  contrib/    source code for contributed software
		  crypto/     source code for contributed cryptography
				  software
		  etc/	      source code for files in /etc
		  games/      source code for files in /usr/games
		  gnu/	      Utilities covered by the GNU General
				  Public License
		  include/    source code for files in /usr/include
		  kerberos5/  build infrastructure for kerberos ver-
				  sion 5
		  lib/	      source code for files in /usr/lib
		  libexec/    source code for files in /usr/libexec
		  release/    files required to produce a FreeBSD
				  release
		  sbin/       source code for files in /sbin
		  secure/     build directory for files in
				  /usr/src/crypto
		  share/      source for files in /usr/share
		  sys/	      kernel source code
		  tools/      tools used for maintenance and testing
				  of FreeBSD
		  usr.bin/    source code for files in /usr/bin
		  usr.sbin/   source code for files in /usr/sbin

	X11R6/	  X11R6 distribution executables, libraries, etc
		  (optional).
		  bin/	    X11R6 binaries (servers, utilities, local
				packages/ports).
		  etc/	    X11R6 configuration files and scripts.
		  include/  X11R6 include files.
		  lib/	    X11R6 libraries.
		  man/	    X11R6 manual pages.
		  share/    architecture-independent files.

 /var/	multi-purpose log, temporary, transient, and spool files

	account/   system accounting files

		   acct        execution accounting file; see acct(5)

	at/	   timed command scheduling files; see at(1)
		   jobs/      directory containing job files
		   spool/     directory containing output spool files

	backups/   miscellaneous backup files
	crash/	   default directory to store kernel crash dumps; see
		   crash(8) and savecore(8)
	cron/	   files used by cron; see cron(8)
		   tabs/      crontab files; see crontab(5)

	db/	   miscellaneous automatically generated system-spe-
		   cific database files
	empty/	   empty directory for use by programs that need a
		   specifically empty directory.  Used for instance by
		   sshd(8) for privilege separation.
	games/	   miscellaneous game status and score files
	heimdal/   kerberos server databases; see kdc(8)
	log/	   miscellaneous system log files

		   wtmp        login/logout log; see wtmp(5)

	mail/	   user mailbox files
	msgs/	   system messages database; see msgs(1)
	preserve/  temporary home of files preserved after an acciden-
		   tal death of an editor; see ex(1)
	quotas/    file system quota information files
	run/	   system information files describing various info
		   about system since it was booted

		   named/      writable by the ``bind'' user; see
				   named(8)
		   ppp/        writable by the ``network'' group for
				   command connection sockets; see ppp(8)
		   utmp        database of current users; see utmp(5)

	rwho/	   rwho data files; see rwhod(8), rwho(1), and
		   ruptime(1)
	spool/	   miscellaneous printer and mail system spooling
		   directories

		   clientmqueue/
				   undelivered submission mail queue; see
				   sendmail(8)
		   ftp/        commonly ~ftp; the anonymous ftp root
				   directory
		   mqueue/     undelivered mail queue; see sendmail(8)
		   output/     line printer spooling directories

	tmp/	   temporary files that are kept between system
		   reboots
		   vi.recover/
				   the directory where recovery files are
				   stored
	yp/	   the NIS maps