Introduction to fstab
The configuration file /etc/fstab contains the necessary information to automate the process of mounting partitions. In a nutshell, mounting is the process where a raw (physical) partition is prepared for access and assigned a location on the file system tree (or mount point).
- In general fstab is used for internal devices, CD/DVD devices, and network shares (samba/nfs/sshfs). Removable devices such as flash drives *can* be added to fstab, but are typically mounted by gnome-volume-manager and are beyond the scope of this document.
- Options for mount and fstab are similar.
- Partitions listed in fstab can be configured to automatically mount during the boot process.
- If a device/partition is not listed in fstab ONLY ROOT may mount the device/partition.
- Users may mount a device/partition if the device is in fstab with the proper options.
Fstab File Configuration
The syntax of a fstab entry is :
[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]
The device/partition (by /dev location or UUID) that contain a file system.
The directory on your root file system (aka mount point) from which it will be possible to access the content of the device/partition (note: swap has no mount point). Mount points should not have spaces in the names.
<file system type>
Type of file system (see LinuxFilesystemsExplained).
Mount options of access to the device/partition (see the man page for mount).
Enable or disable backing up of the device/partition (the command dump). This field is usually set to 0, which disables it.
Controls the order in which fsck checks the device/partition for errors at boot time. The root device should be 1. Other partitions should be 2, or 0 to disable checking.
Please refer to the examples section for sample entries. We have provided you some detailed explanations of each field:
By default, Ubuntu now uses UUID to identify partitions.
To list your devices by UUID use blkid
Alternately syntax to refer to partitions :
- Device : /dev/sdxy
- Label : LABEL=label
- Network ID
- Samba : //server/share
- NFS : server:/share
- SSHFS : sshfs#user@server:/share
A mount point is a location on your directory tree to mount the partition. The default location is /media although you may use alternate locations such as /mnt or your home directory.
You may use any name you wish for the mount point, but you must create the mount point before you mount the partition.
For example : /media/windows
sudo mkdir /media/windows
File System Type
You may either use auto or specify a file system. Auto will attempt to automatically detect the file system of the target file system and in general works well. In general auto is used for removable devices and a specific file system or network protocol for network shares.
- vfat - used for FAT partitions.
- ntfs, ntfs-3g - used for ntfs partitions.
- ext4, ext3, ext2, jfs, reiserfs, etc.
- udf,iso9660 - for CD/DVD.
Options are dependent on the file system.
You may use "defaults" here and some typical options may include :
Ubuntu 8.04 now uses relatime as default for linux native file systems. You can find a discussion of relatime here : http://lwn.net/Articles/244829/
- defaults = rw, suid, dev, exec, auto, nouser, and async.
- ntfs/vfat = permissions are set at the time of mounting the partition with umask, dmask, and fmask and can not be changed with commands such as chown or chmod.
I advise dmask=027,fmask=137 (if you user umask=000 all your files will be executable). More permissive options would be dmask=000,fmask=111.
For mounting samba shares you can specify a username and password, or better a credentials file. The credentials file contains should be owned by root.root with permissions = 0400 .
Common options :
- sync/async - All I/O to the file system should be done (a)synchronously.
- auto - The filesystem can be mounted automatically (at bootup, or when mount is passed the -a option). This is really unnecessary as this is the default action of mount -a anyway.
- noauto - The filesystem will NOT be automatically mounted at startup, or when mount passed -a. You must explicitly mount the filesystem.
- dev/nodev - Interpret/Do not interpret character or block special devices on the file system.
- exec / noexec - Permit/Prevent the execution of binaries from the filesystem.
- suid/nosuid - Permit/Block the operation of suid, and sgid bits.
- ro - Mount read-only.
- rw - Mount read-write.
- user - Permit any user to mount the filesystem. This automatically implies noexec, nosuid,nodev unless overridden.
- nouser - Only permit root to mount the filesystem. This is also a default setting.
- defaults - Use default settings. Equivalent to rw, suid, dev, exec, auto, nouser, async.
- _netdev - this is a network device, mount it after bringing up the network. Only valid with fstype nfs.
For specific options with specific file systems see:
This field sets whether the backup utility dump will backup file system. If set to "0" file system ignored, "1" file system is backed up.
Dump is seldom used and if in doubt use 0.
Pass (fsck order)
Fsck order is to tell fsck what order to check the file systems, if set to "0" file system is ignored.
Often a source of confusion, there are only 3 options :
- 0 == do not check.
- 1 == check this partition first.
- 2 == check this partition(s) next
In practice, use "1" for your root partition, / and 2 for the rest. All partitions marked with a "2" are checked in sequence and you do not need to specify an order.
Use "0" to disable checking the file system at boot or for network shares.
You may also "tune" or set the frequency of file checks (default is every 30 mounts) but in general these checks are designed to maintain the integrity of your file system and thus you should strongly consider keeping the default settings.
The contents of the file will look similar to following:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 # /dev/sda5 UUID=be35a709-c787-4198-a903-d5fdc80ab2f8 / ext3 relatime,errors=remount-ro 0 1 # /dev/sda6 UUID=cee15eca-5b2e-48ad-9735-eae5ac14bc90 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
NOTE: These network share examples (samba, nfs, and sshfs) assume you have already set up the appropriate server.
# FAT ~ Linux calls FAT file systems vfat) # /dev/hda1 UUID=12102C02102CEB83 /media/windows vfat auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0 # NTFS ~ Use ntfs-3g for write access (rw) # /dev/hda1 UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0 # Zip Drives ~ Linux recognizes ZIP drives as sdx'''4''' # Separate Home # /dev/sda7 UUID=413eee0c-61ff-4cb7-a299-89d12b075093 /home ext3 nodev,nosuid,relatime 0 2 # Data partition # /dev/sda8 UUID=3f8c5321-7181-40b3-a867-9c04a6cd5f2f /media/data ext3 relatime,noexec 0 2 # Samba //server/share /media/samba cifs user=user,uid=1000,gid=100 0 0 # "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file # "share" = name of the shared directory # "user" = your samba user # This set up will ask for a password when mounting the samba share. If you do not want to enter a password, use a credentials file. # replace "user=user" with "credentials=/etc/samba/credentials" In the credentials file put two lines # username=user # password=password # make the file owned by root and ro by root (sudo chown root.root /etc/samba/credentials && sudo chmod 400 /etc/samba/credentials) # NFS Server:/share /media/nfs nfs rsize=8192 and wsize=8192,noexec,nosuid # "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file # "share" = name of the shared directory #SSHFS sshfs#user@server:/share fuse user,allow_other 0 0 # "Server" = Samba server (by IP or name if you have an entry for the server in your hosts file # "share" = name of the shared directory
File System Specific Examples
Here are a couple of basic examples for different file system types. I will use /dev/sdb1 or /dev/hda2 for simplicity, but remember that any /dev location, UUID=<some_id>, or LABEL=<some_label> can work.
ext2 and ext3
The main difference between ext2 and ext3 is that ext3 has journaling which helps protect it from errors when the system crashes.
A root filesystem:
UUID=30fcb748-ad1e-4228-af2f-951e8e7b56df / ext3 defaults,errors=remount-ro,noatime 0 1
A non-root file system, ext2:
/dev/sdb1 /media/disk2 ext2 defaults 0 2
fat16 and fat32
/dev/hda2 /media/data1 vfat defaults,user,exec,uid=1000,gid=100,umask=000 0 0
/dev/sdb1 /media/data2 vfat defaults,user,dmask=027,fmask=137 0 0
This example is perfect for a Windows partition.
/dev/hda2 /media/windows ntfs-3g defaults,locale=en_US.utf8 0 0
For a list of locales available on your system, run
This filesystem is generally used by Apple computers.
For Read/Write mounting:
/dev/sdb2 /media/Macintosh_HD hfsplus rw,exec,auto,users 0 0
Note: if you want to write data on this partition, you must disable the journalization of this partition with diskutil under Mac OS.
For Read only:
/dev/sda2 /media/Machintosh_HD hfsplus ro,defaults 0 2
Note: if you want to have access to your files on Ubuntu, you must change the permission of the folders and contained files you want to access by doing in the apple terminal:
sudo chmod -R 755 Folder
"Staff" group should have appeared in this folder's info. You can do this on Music and Movies to access these files from Ubuntu.
Please, before you edit system files, make a backup. The -B flag with nano will make a backup automatically.
To edit the file in Ubuntu, run:
gksu gedit /etc/fstab
To edit the file in Kubuntu, run:
kdesu kate /etc/fstab
To edit the file directly in terminal, run:
sudo nano -Bw /etc/fstab
- -B = Backup origional fstab to /etc/fstab~ .
- -w = disable wrap of long lines.
sudo -e /etc/fstab
To view the contents of /etc/fstab, run the following terminal command:
To get a list of all the UUIDs, use one of the following two commands:
sudo blkid ls -l /dev/disk/by-uuid
To list the drives and relevant partitions that are attached to your system, run:
sudo fdisk -l
To mount all file systems in /etc/fstab, run:
sudo mount -a
Remember that the mount point must already exist, otherwise the entry will not mount on the filesystem. To create a new mount point, use root privileges to create the mount point. Here is the generalization and an example:
sudo mkdir /path/to/mountpoint sudo mkdir /media/disk2
Here are some more links for your convenience: