File System Layout
Like MS-DOS and most operating systems, Unix uses a set of subdirectories
for organization. To help keep some logical order, many system directories
exist, each with a name that implies what is held there. Knowing the layout
of a Unix system helps navigate the system, find the required binaries, etc.
For the most part, these directories will remain fairly consistant among
all flavors of unix. Directories like /bin, /etc/, and /sbin are
guaranteed to be found on all flavors. If not, the admin messed up something
during install or some new company has a wierd idea of what unix is ;)
/bin (binaries) - essential system binaries
ls, cp, mv, chmod, cat, kill, gzip, and more
/sbin (system binaries) - system binaries, daemons, and
administrative programs.
fsck, mount, umount, adduser, shutdown, route, and more
/dev (devices) - device files represent physical and logical devices
on a unix system. Having files that represents physical devices
allows for more flexible manipulation and easier notation.
(the following designations are mostly found on linux unless otherwise
specified.)
Examples of input/output devices on Linux.
crw-rw-rw- 1 root sys 14, 4 Jul 18 1994 /dev/audio
lrwxrwxrwx 1 root hide 4 Oct 29 1998 /dev/mouse -> cua0
Examples of different drive devices on linux. hda1 designated an
IDE drive, fd1 a floppy, and sda a SCSI drive.
brw-rw---- 1 root floppy 2, 1 May 14 1996 /dev/fd1
brw-r----- 1 root disk 3, 1 Apr 27 1995 /dev/hda1
brw-r----- 1 root disk 8, 0 Apr 29 1995 /dev/sda
Examples of different drive devices on NetBSD.
brw-r----- 1 root operator 4, 0 Jul 31 17:03 /dev/sd0a
brw-r----- 1 root operator 4, 1 Aug 1 13:41 /dev/sd0b
brw-r----- 1 root operator 0, 0 Jul 31 17:03 /dev/wd0a
brw-r----- 1 root operator 0, 1 Jul 31 17:03 /dev/wd0b
Examples of different drive devices on Solaris.
brw-r----- 1 root sys 32, 14 Aug 4 11:51
../../devices/iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0:g
(ugly eh? :)
Examples of virtual consoles (consoles at the physical machine)
crw--w--w- 1 root root 4, 1 Aug 2 11:16 /dev/tty1
crw--w--w- 1 root root 4, 2 Jul 31 15:40 /dev/tty2
Examples of pseudo terminals. If you access the machine remotely, you
are allocated a pseudo terminal.
crw-rw-rw- 1 root tty 2, 177 Aug 4 20:18 /dev/ptya1
crw-rw-rw- 1 root tty 2, 197 May 20 1996 /dev/ptyb5
Examples of serial ports on a Linux system. These correspond with
COM1, COM2 etc in MSDOS.
crw-rw---- 1 root 14 5, 65 Jul 17 1994 /dev/cua1
crw-rw---- 1 root tty 4, 64 Jul 17 1994 /dev/ttyS0
Examples of printers under Linux.
crw-rw---- 1 root daemon 6, 1 Apr 27 1995 /dev/lp1
crw-rw---- 1 root daemon 6, 2 Apr 27 1995 /dev/lp2
"devnull" is a virtual device for 'nothing'. Anything sent to this
device will disappear. This often good for redirecting error output,
or anything else you don't want to see.
crw-rw-rw- 1 root sys 1, 3 Jul 17 1994 /dev/null
Devices are a funny thing. As time progresses, their use and
importance will become more and more clear.
/etc Contains many system configuration files.
/etc/passwd - essential user information including user name,
user id, group id, home directory, and shell
/etc/shadow - encrypted password, account expiration information
/etc/group - user/group information
'rc' files - system startup/shutdown scripts
/etc/security/ - some unix flavors use this to store files
relating to system security
/home (home directories) - where users store their files and do daily
activity from. for the average user, this will be the most
important directory they use
/lib (libraries) - shared library images. Many programs rely on
these. Libraries have common routines that can be used by
many programs. Instead of creating new libraries for every
single application, they share these. Unix library files are
akin to Windows .dll files.
/proc (processes) - 'proc' is a virtual file system. Files here
are stored in memory, not on the drive. A user or admin
can get information on programs running through the proc files.
/tmp (temporary) - Many programs (and users) utilize this directory
for writing files while running and remove them when done. Users
with a quota (or limit on their disk space) can access this space
for temporary storage. Beware! Admins like to delete stuff here
when running low on diskspace. On some systems, this directory
is completely erased during bootup.
/var (various) - mostly system subdirectories that used to reside
in the /usr directory but have since been broken out to here.
/var/adm - linked to /var/log in linux, 'adm' notation is used
in other flavors of unix.
/var/log - system logs that record user and system activity.
Logs keep track of connections to the system, daemon
activity, file transfers, mail, and more.
/var/spool - spool dir contains incoming mail, outgoing mail,
cron jobs, and more.
/var/man - various manual pages on system binaries
/usr (user) - Contains a wide variety of subdirectories full of user and
administrative tools
/usr/X11R6 - The X-Windows subdirectory - all X-Win programs and
config files
/usr/sbin - much like /sbin, a bulk of system admin programs are
located here
/usr/bin - much like /bin, this contains the bulk of the unix
programs not found in other places
/usr/etc - more configuration files for system utilities
and programs
/usr/include - 'include' files for the C compiler - primarily
used for system programmers
/usr/lib - more shared libraries for system applications
/usr/man - more manual pages for system tools
/usr/local - files not essential to the system or users, but
often the home of many extra utilities that give
the system a lot of its functionality. Programs
like 'ssh' and 'pgp' are typically installed here
by default.
Since writing this, Demonika has kindly pointed out that "man hier" will
give a similiar (and more thorough) list of the file system hierarchy.
jericho@attrition.org
(c) copyright 1998, 1999 Brian Martin