Clarus Linux Reference Library
Command Guide • Filesystem / Storage

ntfs-3g

Mount and access NTFS filesystems on Linux using the classic userspace driver (FUSE). Most commonly used for external drives, dual-boot partitions, and recovering data from Windows-formatted volumes.

Category: Filesystem FUSE userspace driver Read/Write NTFS External drives Dual-boot

What it does

ntfs-3g provides reliable read/write access to NTFS volumes by mounting them via the Linux FUSE layer. Once mounted, NTFS behaves like a normal directory tree (files, permissions mapping, timestamps) so you can use standard tools (cp, rsync, tar, etc.).

You typically call it through mount as -t ntfs-3g, or directly as ntfs-3g with a device and mountpoint.

How it works (mechanical)

NTFS support is implemented in userspace. The kernel hands filesystem operations (open/read/write/rename, etc.) to a FUSE process. That process (ntfs-3g) interprets NTFS structures on disk, performs the requested action, and returns results back through FUSE to the calling program.

  • Kernel handles device I/O + caching + FUSE plumbing.
  • ntfs-3g interprets NTFS metadata (MFT, attributes, ACLs, journaling semantics).
  • Linux permissions are mapped (not identical to Windows ACLs) using mount options.

10 Practical Examples

Tip: identify the partition first with lsblk / blkid.

# 1) See disks/partitions and filesystems
lsblk -f
blkid
# 2) Create a mount point and mount an NTFS partition read/write
sudo mkdir -p /mnt/win
sudo mount -t ntfs-3g /dev/sdb1 /mnt/win
# 3) Mount read-only (safe for recovery / unknown health)
sudo mount -t ntfs-3g -o ro /dev/sdb1 /mnt/win
# 4) Allow non-root user access (common for desktop/external drives)
#    (replace 'craig' with your username)
sudo mount -t ntfs-3g -o uid=$(id -u craig),gid=$(id -g craig),umask=022 /dev/sdb1 /mnt/win
# 5) Make everything readable/writable by your user only (more permissive for personal drives)
sudo mount -t ntfs-3g -o uid=$(id -u),gid=$(id -g),umask=007 /dev/sdb1 /mnt/win
# 6) Mount by UUID (more stable than /dev/sdX names)
#    find UUID with: blkid
sudo mount -t ntfs-3g UUID=1234-ABCD /mnt/win
# 7) Add a persistent /etc/fstab entry (mount on boot)
#    Example line (edit UUID + mountpoint + options to match your needs):
UUID=1234-ABCD  /mnt/win  ntfs-3g  defaults,uid=1000,gid=1000,umask=022  0  0
# 8) If Windows "fast startup" left the volume hibernated, mount read-only to copy data
sudo mount -t ntfs-3g -o ro /dev/sdb1 /mnt/win
# then copy data out:
rsync -aH --info=progress2 /mnt/win/Users/You/Documents/ ~/recovered-docs/
# 9) Attempt to clear a dirty NTFS flag / minor repair (NOT a full chkdsk replacement)
#    Unmount first if mounted:
sudo umount /mnt/win
sudo ntfsfix /dev/sdb1
# 10) Safely unmount when done (especially before unplugging USB drives)
sudo umount /mnt/win
# desktop-friendly alternative:
udisksctl unmount -b /dev/sdb1

Notes & Gotchas

  • Hibernation / Fast Startup: If Windows hibernated the NTFS volume, Linux may refuse RW mounts or mount read-only. Best fix is to fully shut down Windows (disable Fast Startup) and run chkdsk if needed.
  • Performance: FUSE adds overhead. For large sequential transfers it can be “fine,” but it’s usually slower than native kernel filesystems.
  • Permissions mapping: NTFS ACLs ≠ Linux mode bits. Use uid/gid/umask (or fmask/dmask) options to avoid surprises.
  • Case behavior: NTFS is case-preserving, historically case-insensitive by default. Linux apps may assume case sensitivity.
  • Do not run fsck on NTFS: Use Windows chkdsk for real repairs; ntfsfix is limited and mainly clears flags.
  • Encryption: BitLocker volumes require separate tooling (e.g., dislocker) before mounting.

Modern equivalent

Many modern Linux distributions include the in-kernel NTFS driver ntfs3 (not the same as ntfs-3g). When available, it can offer better performance because it runs in kernel space.

# If your system supports it, you can try:
sudo mount -t ntfs3 /dev/sdb1 /mnt/win

# Or in /etc/fstab:
UUID=1234-ABCD  /mnt/win  ntfs3  defaults,uid=1000,gid=1000,umask=022  0  0

If you’re just moving files between OSes and don’t need NTFS specifically, consider exFAT for removable drives (simple, widely supported).

Historical context (why ntfs-3g became the standard)

For many years, Linux’s in-kernel NTFS write support was limited or risky for general use. ntfs-3g became the de-facto solution because it delivered dependable read/write support in userspace via FUSE, making NTFS volumes practical for everyday Linux users—especially in dual-boot environments and on USB drives.

Related commands

  • lsblk, blkid — identify devices, UUIDs, filesystem types
  • mount, umount — mount/unmount filesystems
  • ntfsfix — clear NTFS “dirty” flags / basic fixes (limited)
  • fdisk, parted — partition management
  • udisksctl — desktop-friendly mount/unmount operations
  • chkdsk (Windows) — the real NTFS repair tool