1.16. /sbin

Linux discriminates between 'normal' executables and those used for system maintenance and/or administrative tasks. The latter reside either here or - the less important ones - in /usr/sbin. Locally installed system administration programs should be placed into /usr/local/sbin.

Programs executed after /usr is known to be mounted (when there are no problems) are generally placed into /usr/sbin. This directory contains binaries that are essential to the working of the system. These include system administration as well as maintenance and hardware configuration programs. You may find lilo, fdisk, init, ifconfig, etc.... here.

Another directory that contains system binaries is /usr/sbin. This directory contains other binaries of use to the system administrator. This is where you will find the network daemons for your system along with other binaries that (generally) only the system administrator has access to, but which are not required for system maintenance and repair. Normally, these directories are never part of normal user's $PATHs, only of roots (PATH is an environment variable that controls the sequence of locations that the system will attempt to look in for commands).

The FSSTND states that:

  /sbin should contain only binaries essential for booting, restoring,
  recovering, and/or repairing the system in addition to the binaries
  in /bin. 

A particular eccentricity of the Linux filesystem hierarchy is that originally /sbin binaries were kept in /etc.

  Deciding what things go into "sbin" directories is simple: if a normal
  (not a system administrator) user will ever run it directly, then it
  must be placed in one of the "bin" directories. Ordinary users should
  not have to place any of the sbin directories in their path.
  For example, files such as chfn which users only occasionally use must
  still be placed in /usr/bin. ping, although it is absolutely necessary
  for root (network recovery and diagnosis) is often used by users and
  must live in /bin for that reason.

  We recommend that users have read and execute permission for everything
  in /sbin except, perhaps, certain setuid and setgid programs. The
  division between /bin and /sbin was not created for security reasons or
  to prevent users from seeing the operating system, but to provide a
  good partition between binaries that everyone uses and ones that are
  primarily used for administration tasks. There is no inherent security
  advantage in making /sbin off-limits for users.

FSSTND compliance requires that the following commands, or symbolic links to commands, are required in /sbin.

       shutdown Command to bring the system down.

The following files, or symbolic links to files, must be in /sbin if the corresponding subsystem is installed:

       fastboot   Reboot the system without checking the disks (optional)
       fasthalt   Stop the system without checking the disks (optional)
       fdisk      Partition table manipulator (optional)
       fsck       File system check and repair utility (optional)
       fsck.*     File system check and repair utility for a specific filesystem (optional)
       getty      The getty program (optional)
       halt       Command to stop the system (optional)
       ifconfig   Configure a network interface (optional)
       init       Initial process (optional)
       mkfs       Command to build a filesystem (optional)
       mkfs.*     Command to build a specific filesystem (optional)
       mkswap     Command to set up a swap area (optional)
       reboot     Command to reboot the system (optional)
       route      IP routing table utility (optional)
       swapon     Enable paging and swapping (optional)
       swapoff    Disable paging and swapping (optional)
       update     Daemon to periodically flush filesystem buffers (optional)