Mount NTFS and exFAT Drives on Linux
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
| ntfs3 | ntfs-3g | |
|---|---|---|
| Type | Kernel driver (Linux 5.15+) | FUSE (userspace) driver |
| Mount with | -t ntfs3 | -t ntfs-3g |
| Speed | Fast, low CPU | Slower, especially with many small files |
| Dirty volumes | Refuses read-write unless you pass force | Refuses if hibernated; offers ntfsfix |
| Package | None 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:
- 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. - If the volume was dirty from a crash, run
chkdsk C: /f(or the drive letter) and reboot. - Shut down normally, then boot Linux.
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. Usefmask=133,dmask=022if you don't want every file to look executable.windows_names: refuses filenames Windows can't open (likea:bor 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 0at 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-3gandexfatprogsare 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 ntfs3anddmesggives 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 acontext=mount option such ascontext=system_u:object_r:samba_share_t:s0rather than disabling SELinux; the context depends on the service. - Arch: install
ntfs-3gandexfatprogsyourself if you want the FUSE driver and repair tools. The kernel modules ship with thelinuxpackage. - openSUSE: install
ntfs-3gwith zypper if missing. YaST Partitioner can add fstab entries, but check the generated options includeuid/gidfor 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
| Symptom | Cause 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 user | Mounted by root without uid/gid. Add them; chmod/chown do nothing on NTFS/exFAT. |
| wrong fs type, bad option, bad superblock | Wrong -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 fstab | Missing nofail or a wrong UUID. Fix fstab from the emergency shell. |
Files with : or ? in the name vanish in Windows | Mount 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.