> For the complete documentation index, see [llms.txt](https://linux-tutorial-cli.gitbook.io/linux-cli-tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://linux-tutorial-cli.gitbook.io/linux-cli-tutorial/txt-files/file-systems-cocepts/lpic3-300/mount.md).

# mount Command

The `mount` command in Linux is used to attach or "mount" file systems and storage devices to directories in the file system hierarchy. Once a file system or device is mounted, its files and directories become accessible to the user under the specified directory (called the "mount point").

This command is essential for managing local and network file systems, removable media like USB drives, and storage devices such as hard disks or SSDs.

## Basic Usage

```bash
sudo mount [options] device directory
```

* **device**: The file system or storage device to be mounted (e.g., `/dev/sda1`, an ISO file, or a network file system).
* **directory**: The local directory where the file system or device will be mounted.

## Common Mounting Scenarios

1. **Mounting a Disk Partition**

   To mount a disk partition like `/dev/sda1` to a directory `/mnt/data`:

   ```bash
   sudo mount /dev/sda1 /mnt/data
   ```

   In this case, `/dev/sda1` refers to the first partition of the first disk (`sda`), and `/mnt/data` is the directory where the partition's contents will be accessible.
2. **Mounting a USB Drive**

   When a USB drive is inserted, it often appears as `/dev/sdb1` or another similar device. To mount it manually:

   ```bash
   sudo mount /dev/sdb1 /media/usb
   ```

   This mounts the USB drive to the `/media/usb` directory.
3. **Mounting an ISO File**

   ISO images can be mounted as virtual file systems. To mount an ISO file:

   ```bash
   sudo mount -o loop /path/to/image.iso /mnt/iso
   ```

   The `-o loop` option allows mounting a file as a block device. The contents of the ISO file will be available under `/mnt/iso`.
4. **Mounting a Network File System (NFS)**

   To mount an NFS share from a server to a local directory:

   ```bash
   sudo mount -t nfs server:/shared_directory /mnt/nfs
   ```

   Replace `server` with the hostname or IP address of the NFS server and `/shared_directory` with the remote shared directory.

## Common Options

* `-t type`: Specifies the file system type (e.g., `ext4`, `nfs`, `vfat`, `iso9660`, `cifs`). Example:

  ```bash
  sudo mount -t ext4 /dev/sda1 /mnt/data
  ```
* `-o options`: Specifies additional options for mounting (e.g., `rw`, `ro`, `uid`, `gid`, `nosuid`, `noexec`, `loop`, etc.). Example (read-only mount):

  ```bash
  sudo mount -o ro /dev/sda1 /mnt/data
  ```
* `-o loop`: Used to mount files as devices, particularly for ISO or image files.
* `-o rw`: Mount the file system with read and write permissions (this is the default for most mounts).
* `-o ro`: Mount the file system as read-only.
* `-o uid=1000,gid=1000`: Set the owner of the files and directories on the mounted file system to user ID `1000` and group ID `1000`.
* `-o remount`: Remounts the file system to apply new mount options (useful for changing from `ro` to `rw` without unmounting).

## Viewing Mounted File Systems

To view all currently mounted file systems, use the `mount` command without any arguments:

```bash
mount
```

Alternatively, you can check the `/proc/mounts` file for detailed information:

```bash
cat /proc/mounts
```

## Unmounting File Systems

To unmount a file system, use the `umount` command:

```bash
sudo umount /mnt/data
```

Make sure no processes are using the mounted file system. If the system is busy, you may need to forcefully unmount it using:

```bash
sudo umount -l /mnt/data
```

## Temporary vs. Permanent Mounting

### Temporary Mount

The `mount` command attaches file systems temporarily. After a system reboot, the mounts will be gone unless they are re-mounted. To automate mounting at boot time, use the `/etc/fstab` configuration file.

### Permanent Mount (via `/etc/fstab`)

For permanent mounting, you need to add an entry to the `/etc/fstab` file. For example, to automatically mount a partition at boot, edit `/etc/fstab` and add:

```
/dev/sda1    /mnt/data    ext4    defaults    0    2
```

In this example:

* `/dev/sda1` is the device to be mounted.
* `/mnt/data` is the mount point.
* `ext4` is the file system type.
* `defaults` includes common options like `rw`, `relatime`, and `exec`.
* The last two fields are dump and fsck options (not usually needed for typical user cases).

After modifying `/etc/fstab`, either reboot the system or run:

```bash
sudo mount -a
```

This command mounts all file systems listed in `/etc/fstab`.

## Examples

### 1. Mounting a File System with Read-Only Access

```bash
sudo mount -o ro /dev/sda1 /mnt/readonly
```

Mounts the partition as read-only.

### 2. Mounting an ISO File

```bash
sudo mount -o loop /path/to/iso/image.iso /mnt/iso
```

Mounts the ISO file so you can access its contents like a normal file system.

### 3. Mounting a CIFS/SMB Share (Windows Share)

```bash
sudo mount -t cifs //server/share /mnt/share -o username=myuser,password=mypassword
```

Mounts a Windows share using the SMB protocol.

### 4. Mounting a USB Drive with Specific Permissions

```bash
sudo mount -o uid=1000,gid=1000 /dev/sdb1 /mnt/usb
```

Mounts a USB drive and sets ownership of the files to user ID `1000` and group ID `1000`.

## Conclusion

The `mount` command is essential for managing file systems and storage devices in Linux. By understanding the various options and scenarios, users can efficiently mount local partitions, remote file systems, and other storage media. Combining `mount` with `umount` and proper `/etc/fstab` configuration allows for flexible and reliable file system management across various types of devices and use cases.
