Several directories are always available in Linux because they are used by the system. These are:
|/||The "Root" directory|
|/usr||Unix system resources / "universal system resources"|
|/usr/lib||Installed program files|
|/mnt (or /media)||Mounted devices|
|/boot||Boot loaders, kernel|
|/home||Users' home directory|
Users cannot write in any directory but their own home-directory (user pietje can only write in /home/pietje). Only root can write in other directories and can give permission to others to write elsewhere. All directories are readable to anyone unless root restricts it.
/bin: Contains basic commands needed for navigation and for the system's initialization scripts.
/boot: Generally contains everything needed to boot, including the kernel and its configuration files and any files needed at runtime by your bootloader.
- Note: "Boot" does not mean get your system into a useful state. It simply means fully execute the kernel and any modules needed to complete that mission.
/dev: Device files. In UNIX/Linux, it's often said, "everything is a file." In
/devyou will find file representations of physical and virtual devices. Different devices have different representations, and can be interacted with in different ways. For example, you can
cata raw wav file into
/dev/dsp(Digital Sound Processor, your sound card) to hear it. You can use the
ddcommand line tool to interact with
/dev/randomto produce a stream of random data.
/etc: Contains your systemwide configuration files. Many of these files and directories will be application-specific (you may have
/etc/sendmail, but seldom both), but some applications are common across most if not all UNIX/Linux flavors and so some files will be on every UNIX/Linux system (with the same purpose), such as:
/etc/hosts: Described above.
/etc/resolv.conf: Contains information on how to resolve hostnames, such as IP addresses of nameservers. Like many system config files, more information can be found on
/etc/resolv.confon most systems by saying
/etc/crontab: Tables for driving cron, an execution scheduler. There are multiple man pages for crontab. Try
man 5 crontabfor information on the file, and
man 8 crontabfor information on the program. Also see the section below on man for more information.
/etc/fstab: Information necessary for mounting your filesystems, including network and other virtual filesystems. Try
man fstabfor more information.
/etc/hostname: The file typically containing the system's hostname. The hostname is set at boot time by reading this file, so one way to change your hostname is to edit this file and reboot. Systems are not required to have this particular file, so it has no man page (on most systems).
/etc/passwd: Despite its name, this file doesn't usually contain any password information. Instead it has a line for each user, including username, userid, groupid, full name, home directory and login shell. Most systems come with a tool to allow you to safely edit the file (by doing lint checking when you save) called
vipw, which will launch the
EDITORenvironment variable (usually
nano) to edit the file with failsafes.
/etc/shadow: Contains user password information, stored cryptographically using a one-way hash. It's worth noting the way this works. The password, when set, is encrypted using a mathematical algorithm that, in theory, cannot be reversed, so the password cannot be decrypted. When you login, the same math is applied to the supplied password. The result is compared with the value in
/etc/shadow, and if the encrypted strings match, you are allowed to log in.
/etc/sudoers: Not every system has
sudoinstalled, so not every system will have this file. If your system doesn't have sudo installed, you'll want to install it right away and add yourself as a sudoer. Say
man sudoersfor more info, and use
vipw) to edit the file.
/home: User home directories. For most systems, this should be on its own partition. This will allow a system administrator to migrate to another Linux distro or even operating system, for example, without losing or having to migrate their data and user-specific configurations. Simply install the new OS without formacodeing this partition. Another benefit is that a user who uses too much space (if filesystem quotas aren't set up) won't be able to fill up the system's available space, which can be an administrative headache.
/lib: Contains shared libraries needed to start your system. Shared library filenames typically end in .so, sometimes followed by dots and numbers indicating version information. They are analogous to
.dllfiles in Windows - they contain functionality shared by multiple executable files, such as reading from and writing to files, etc. This particular directory contains shared libraries required by executables in
/media: Mount point for removable media. This is where your CDROM drive, USB sticks, floppies, etc. will generally be mounted. Implementation varies by distribution/OS, but a mounted CDROM drive may be accessed through (for example)
/mnt: Temporary mount point for arbitrary filesystems. You may temporarily mount, for example, a remote SMB filesystem, a loopback device (like a mounted ISO file), or an actual partition on the machine here. See
/opt: 3rd party software. What's generally installed here is binary-only software not compiled for a specific distribution. For example, if you download and install [hcodep://www.google.com/earth/index.html Google Earth], it will be installed here by default. It is statically compiled, meaning it shouldn't require any libraries specific to your system, which means it should be portable across distributions. That distinguishes it from most other applications on your system. If you use a lot of these applications, it may be a good idea to also make
/opta separate partition, since it should be portable across distributions and distribution versions, like
/root: Root's home directory.
/sbin: System binaries. Like
/binexcept that these binaries are generally only usable by the superuser, or root.
/tmp: Temporary files. On most modern UNIX/Linux operating systems, this is a special filesystem, like tmpfs, occupying a specific amount of space. It should have the "sticky" filesystem attribute set, meaning any user can create files here, but users cannot edit each other's files.
/usr: Almost a filesystem unto itself,
/usrcontains shareable, read-only files. Shareable in this context means that the files are not host-specific. You sould be able to share these files with another host, which would mount
/usrremotely and be able to use its contents.