Mount NTFS and exFAT Drives on Linux

Short answer: mount an NTFS partition
lsblk -f                                  # find it, e.g. sdb1 with FSTYPE ntfs
sudo mkdir -p /mnt/windows
sudo mount -t ntfs3 -o uid=$(id -u),gid=$(id -g),umask=022 /dev/sdb1 /mnt/windows
# if ntfs3 refuses, try the FUSE driver
sudo mount -t ntfs-3g -o uid=$(id -u),gid=$(id -g),umask=022 /dev/sdb1 /mnt/windows

If it fails with "volume is dirty" or "Windows is hibernated", boot Windows and shut it down fully (hold Shift while clicking Shut down), or disable Fast Startup. exFAT drives mount with sudo mount /dev/sdb1 /mnt/usb.

Identify the drive

lsblk -f
sudo blkid /dev/sdb1

Example output:

NAME        FSTYPE      LABEL    UUID                                 MOUNTPOINTS
sdb
└─sdb1      exfat       USB      6A2B-1C3D
nvme0n1
├─nvme0n1p1 vfat        SYSTEM   B4E1-77A0                            /boot/efi
├─nvme0n1p3 ntfs        Windows  01DA4F2E8C3B1A20
├─nvme0n1p4 BitLocker
└─nvme0n1p5 ext4                 9c1d...                              /

ntfs and exfat mount directly. BitLocker needs unlocking first (see below). If the FSTYPE column is empty, see mount: unknown filesystem type. For partitions, labels and fstab in general, see the disk management guide.

In a desktop file manager (Files, Dolphin, Nemo), clicking the drive in the sidebar mounts it under /run/media/$USER/ or /media/$USER/ with your user as owner. The command line is only needed for fixed mount points, auto-mounting at boot, or when the click fails.

ntfs3 vs ntfs-3g

ntfs3ntfs-3g
TypeKernel driver (Linux 5.15+)FUSE (userspace) driver
Mount with-t ntfs3-t ntfs-3g
SpeedFast, low CPUSlower, especially with many small files
Dirty volumesRefuses read-write unless you pass forceRefuses if hibernated; offers ntfsfix
PackageNone needed (in the kernel)ntfs-3g (installed by default on most desktops)

Use ntfs3 first. If you hit odd errors with a specific volume, ntfs-3g is the fallback. Install ntfs-3g if it's missing:

sudo apt install ntfs-3g        # Ubuntu, Debian, Mint
sudo dnf install ntfs-3g        # Fedora
sudo pacman -S ntfs-3g          # Arch
sudo zypper install ntfs-3g     # openSUSE

Plain -t ntfs may map to a different driver depending on the kernel and distro, so name the driver explicitly to avoid surprises.

Fix "dirty" and "hibernated" Windows volumes

Windows Fast Startup (on by default in Windows 10 and 11) doesn't really shut down: it hibernates the kernel and leaves NTFS volumes marked in use. Linux refuses to write to them because changes would be lost or corrupt the disk when Windows resumes. Typical messages:

ntfs3: sdb1: volume is dirty and "force" flag is not set!
The disk contains an unclean file system (0, 0).
Windows is hibernated, refused to mount.
Falling back to read-only mount because the NTFS partition is in an unsafe state.

Fix it from Windows, which is the only safe way:

  1. Boot Windows. Open an administrator Command Prompt and run powercfg /h off. This disables hibernation and Fast Startup together. Or turn off "Turn on fast startup" under Control Panel → Power Options → Choose what the power buttons do.
  2. If the volume was dirty from a crash, run chkdsk C: /f (or the drive letter) and reboot.
  3. Shut down normally, then boot Linux.
Don't force-mount a hibernated volume

ntfsfix -d, -o force or remove_hiberfile make the volume writable, but if Windows is actually hibernated, everything not saved in that Windows session is lost, and writing from Linux can corrupt the filesystem when Windows resumes. Only use them on a disk whose Windows install is gone or that you've already backed up.

To read files without touching anything, mount read-only: sudo mount -t ntfs3 -o ro /dev/sdb1 /mnt/windows.

Mount automatically at boot (fstab)

NTFS and exFAT don't store Linux owners and permissions, so the mount options decide who owns the files. Use the UUID from lsblk -f and your user ID from id (usually 1000).

sudo mkdir -p /mnt/windows /mnt/usb
sudo nano /etc/fstab
# NTFS data partition, kernel driver
UUID=01DA4F2E8C3B1A20  /mnt/windows  ntfs3    uid=1000,gid=1000,umask=022,windows_names,nofail  0  0
# same with ntfs-3g instead
# UUID=01DA4F2E8C3B1A20 /mnt/windows ntfs-3g  uid=1000,gid=1000,umask=022,windows_names,nofail  0  0
# exFAT drive that's always connected
UUID=6A2B-1C3D         /mnt/usb      exfat    uid=1000,gid=1000,umask=022,nofail  0  0

What the options do:

  • uid/gid: every file appears owned by you, so you can write without sudo.
  • umask=022: you can write, others can read. Use fmask=133,dmask=022 if you don't want every file to look executable.
  • windows_names: refuses filenames Windows can't open (like a:b or trailing dots), so the drive stays usable from Windows.
  • nofail: boot continues if the drive is missing. Without it, an absent USB disk drops you into emergency mode.
  • Pass 0 0 at the end: Linux shouldn't fsck NTFS or exFAT at boot.

Test without rebooting:

sudo systemctl daemon-reload
sudo mount -a
findmnt /mnt/windows

For a removable drive, add noauto,x-systemd.automount so it mounts on first access instead of at boot.

exFAT drives

exFAT (common on USB sticks, SD cards and external drives shared with macOS) has a kernel driver since Linux 5.7, so no FUSE package is needed on any current distro. For formatting and repair, install exfatprogs:

sudo apt install exfatprogs       # Ubuntu, Debian, Mint
sudo dnf install exfatprogs       # Fedora
sudo pacman -S exfatprogs         # Arch
sudo zypper install exfatprogs    # openSUSE
sudo fsck.exfat /dev/sdb1         # check/repair (unmounted)
sudo mkfs.exfat -L USB /dev/sdb1  # format (erases the partition)

Remove the old exfat-fuse/exfat-utils packages if you still have them; they conflict with exfatprogs on some distros.

Distro notes

  • Ubuntu and Linux Mint: ntfs-3g and exfatprogs are installed by default, and the file manager mounts NTFS through udisks2. If a drive shows a "dirty" error only when clicked in Files, the command line with -t ntfs3 and dmesg gives a clearer message.
  • Debian: desktop installs include ntfs-3g; minimal and server installs may not, but the ntfs3 kernel driver is always available on Debian 13's kernel.
  • Fedora: Workstation includes ntfs-3g. If SELinux blocks a service (Samba, a media server) from reading the mounted drive, add a context= mount option such as context=system_u:object_r:samba_share_t:s0 rather than disabling SELinux; the context depends on the service.
  • Arch: install ntfs-3g and exfatprogs yourself if you want the FUSE driver and repair tools. The kernel modules ship with the linux package.
  • openSUSE: install ntfs-3g with zypper if missing. YaST Partitioner can add fstab entries, but check the generated options include uid/gid for your user.

Sharing a data partition between Windows and Linux on a dual-boot? Keep it NTFS (or exFAT for removable drives), keep Fast Startup off, and keep the Linux system and home on ext4 or Btrfs.

BitLocker-encrypted Windows partitions

Windows 11 enables device encryption on many new laptops. cryptsetup can unlock BitLocker with your recovery key (from account.microsoft.com or your IT department):

sudo cryptsetup open --type bitlk /dev/nvme0n1p3 win
# enter the 48-digit recovery key or the password
sudo mount -t ntfs3 -o ro /dev/mapper/win /mnt/windows
# when finished
sudo umount /mnt/windows && sudo cryptsetup close win

Mount it read-only unless you need to write: it avoids triggering BitLocker recovery in Windows. dislocker is an alternative on older systems.

Verify

findmnt -t ntfs3,fuseblk,exfat
touch /mnt/windows/linux-write-test && rm /mnt/windows/linux-write-test && echo writable
sudo dmesg | tail -20

ntfs-3g mounts show as type fuseblk. If touch fails with "Read-only file system", the volume was mounted read-only because it's dirty or hibernated; dmesg tells you which.

Common problems

SymptomCause and fix
Read-only, or "volume is dirty"Fast Startup or hibernation. Disable it in Windows and shut down fully.
Permission denied writing as your userMounted by root without uid/gid. Add them; chmod/chown do nothing on NTFS/exFAT.
wrong fs type, bad option, bad superblockWrong -t type, a typo in options, or real corruption. Check dmesg; repair with chkdsk from Windows.
unknown filesystem type 'BitLocker'Unlock with cryptsetup open --type bitlk first.
Boot hangs or emergency mode after editing fstabMissing nofail or a wrong UUID. Fix fstab from the emergency shell.
Files with : or ? in the name vanish in WindowsMount with windows_names to prevent creating them.

Removing Linux from a dual-boot and giving the space back to Windows? See remove Ubuntu from dual boot.

Frequently asked questions

Why is my Windows drive read-only in Linux?

Windows left the volume marked dirty or hibernated, usually because Fast Startup is on. Shut Windows down fully (or disable Fast Startup with powercfg /h off) and Linux will mount it read-write.

Should I use ntfs3 or ntfs-3g?

ntfs3 is in the kernel and much faster. ntfs-3g is older and slower but has better repair tools (ntfsfix) and is still what many desktop auto-mounters use. Both are fine for everyday files.

Can Linux open BitLocker drives?

Yes, with the recovery key: sudo cryptsetup open --type bitlk /dev/sdX2 win, then mount /dev/mapper/win. Without the key, the data is inaccessible.

Can I install Linux programs or games on an NTFS drive?

It works for many Steam games and data, but NTFS doesn't support Linux permissions natively, so avoid it for your home directory, system files or anything needing executable bits and symlinks to behave exactly like ext4.

Spotted a mistake or a command that no longer works? Send a correction — pages are re-checked when reports come in.