How to Mount an NTFS Drive on Fedora (Read/Write Access)

Install ntfs-3g and mount the drive with the ntfs-3g type to enable read/write access on Fedora.

The scenario

You plug a USB drive into your Fedora machine or boot into a dual-boot setup. The file manager shows the NTFS partition, but every time you try to save a file, you get a permission denied error. The drive is mounted read-only. You need read/write access to move projects between Windows and Linux, or to back up data without switching operating systems.

What is actually happening

Fedora ships with two NTFS drivers. The modern kernel includes ntfs3, an in-tree driver that handles read/write operations directly in kernel space. Older systems and certain edge cases rely on ntfs-3g, a FUSE-based driver that runs in user space and translates filesystem calls on the fly. Both work, but neither will allow write access if Windows left the volume in a hibernated or fast-startup state. Microsoft's Fast Startup feature does not fully shut down the disk. It hibernates the kernel session and marks the NTFS journal as dirty. Linux detects that flag and mounts the partition read-only to prevent filesystem corruption. You must clear that flag before Linux will grant write permissions.

FUSE stands for Filesystem in Userspace. The kernel exposes a virtual filesystem interface, and a user-space daemon handles the actual disk I/O. This architecture makes ntfs-3g highly portable and safe, but it adds a small performance overhead compared to the native ntfs3 kernel module. The overhead is negligible for typical desktop workloads, but it becomes visible when streaming large video files or running database workloads across the partition.

Run journalctl -xe when you encounter mount failures. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style. It shows recent log lines AND state in one view. Always check status before restart.

Install and mount the drive

Start by identifying the exact device path. Do not guess the partition letter. Run lsblk to see the block device tree and locate your NTFS volume.

lsblk -f
# Lists all block devices with filesystem types
# Look for the partition labeled ntfs
# Note the device name like /dev/sdb1 or /dev/nvme0n1p3

Create a mount point directory if you do not already have one. The /mnt directory is the standard location for temporary or manual mounts.

sudo mkdir -p /mnt/ntfs-data
# Creates the directory if it does not exist
# -p prevents errors if the path already exists
# Keeps the mount hierarchy clean and predictable

Install the ntfs-3g package. Fedora includes the kernel ntfs3 driver by default, but ntfs-3g remains the most reliable fallback for older drives, external enclosures, and volumes with complex metadata.

sudo dnf install ntfs-3g -y
# Pulls the FUSE-based NTFS driver from the default repository
# -y skips the confirmation prompt for automation
# dnf upgrade --refresh is the normal weekly maintenance command

Mount the partition with explicit read/write flags. Specify the filesystem type to force the correct driver.

sudo mount -t ntfs-3g -o rw,uid=$(id -u),gid=$(id -g),umask=022 /dev/sdb1 /mnt/ntfs-data
# -t ntfs-3g forces the FUSE driver instead of the kernel default
# -o rw enables read/write access
# uid and gid map ownership to your current user
# umask=022 sets standard file permissions for new files

If the mount command returns no output, it succeeded. Linux commands typically stay silent on success.

Make it permanent

Manual mounts disappear after a reboot. Add an entry to /etc/fstab so the system mounts the drive automatically at boot. Edit the file with your preferred terminal editor.

sudo nano /etc/fstab
# Opens the filesystem table for editing
# Use vim or micro if you prefer a different editor
# Config files in /etc/ are user-modified

Append a new line at the bottom of the file. Use the UUID instead of the device path. Device paths like /dev/sdb1 change when you plug in other drives. The UUID stays constant.

blkid /dev/sdb1
# Returns a string like UUID="A1B2-C3D4"
# Extracts the unique identifier baked into the filesystem superblock
# Guarantees consistent mounting across hardware changes

Add this line to /etc/fstab. Replace the UUID with your actual value.

# /etc/fstab entry for NTFS drive
UUID=A1B2-C3D4  /mnt/ntfs-data  ntfs-3g  rw,uid=1000,gid=1000,umask=022,defaults  0  0
# UUID ensures the correct partition mounts even if device letters shift
# ntfs-3g specifies the driver type
# rw,uid,gid,umask handle permissions and ownership
# defaults applies standard mount options
# 0 0 disables dump and fsck checks for external filesystems

Test the configuration before rebooting. A syntax error in /etc/fstab will drop you into emergency mode on the next boot.

sudo mount -a
# Attempts to mount all filesystems listed in fstab
# Returns immediately if everything is already mounted
# Prints an error if the syntax or UUID is invalid

Run mount -a first. Read the actual error before guessing.

Verify it worked

Check the mount status and test write permissions. Run df -h to confirm the filesystem is attached and shows the correct size.

df -h /mnt/ntfs-data
# Displays disk usage for the specific mount point
# Confirms the filesystem type and available space
# Verifies the mount succeeded without kernel warnings

Create a test file to prove write access works.

touch /mnt/ntfs-data/test-write.txt
# Creates an empty file in the mounted directory
# Fails with permission denied if the mount is still read-only
# Validates the uid/gid mapping from the mount options

Check the file permissions to ensure ownership matches your user account.

ls -l /mnt/ntfs-data/test-write.txt
# Shows file permissions, owner, and group
# Confirms the uid/gid mapping from the mount options
# Proves the FUSE daemon is translating Linux permissions correctly

Delete the test file when you are done. Keep the mount point clean for production use.

Common pitfalls and error messages

The most frequent blocker is Windows Fast Startup. If you see this error when mounting, the volume is hibernated.

NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows and shut down normally.

Boot into Windows and disable Fast Startup. Open Control Panel, select Power Options, click Choose what the power buttons do, and uncheck Turn on fast startup. Shut down Windows completely. Boot back into Fedora and mount the drive again.

If you cannot boot into Windows, use ntfsfix to clear the dirty flag from Linux. This tool repairs basic NTFS inconsistencies and resets the hibernation marker.

sudo ntfsfix /dev/sdb1
# Clears the Windows hibernation flag on the partition
# Fixes minor filesystem metadata errors
# Does not replace a full Windows chkdsk for severe corruption

Another common issue is SELinux blocking access when you mount to a user directory like ~/ntfs. SELinux enforces strict context boundaries. Mount external drives to /mnt or /media. If you must mount to a home directory, restore the context after mounting.

sudo restorecon -Rv ~/ntfs
# Resets SELinux security contexts to default values
# -R applies recursively to all files and directories
# -v prints each file as it is relabeled

SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. Disabling the policy breaks container isolation and breaks service boundaries. Fix the context instead.

Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/. This rule applies to SELinux policy modules and mount helper configurations.

When to use ntfs-3g versus ntfs3

Use ntfs-3g when you need maximum compatibility with older external enclosures, USB bridges, or drives formatted on legacy Windows versions. Use ntfs3 when you want native kernel performance and are running a modern Fedora release with a 6.1+ kernel. Use ntfs-3g when you encounter metadata corruption errors or permission mapping issues with the in-tree driver. Use ntfs3 when you are mounting internal NVMe partitions and need lower latency for large file transfers. Stay on ntfs-3g if you rely on advanced mount options like windows_names or compression.

Where to go next