NTFS-3G read/write mounting on Linux and Unix-like systems
NTFS-3G Safe Read/Write NTFS Driver
At a glance
- What is it?
- NTFS-3G provides a userspace route to read and write NTFS volumes on Linux, FreeBSD, macOS and other supported systems. It supports NTFS metadata beyond basic file access, but its FUSE-based design adds dependencies and configuration decisions.
- Who is it for?
- NTFS-3G is appropriate for administrators and users who must read and write NTFS volumes on one of its documented platforms, especially when Windows interoperability requires ownership, permissions, ACLs or junction points. It is less suitable for users seeking only basic read access, environments that cannot support its userspace filesystem architecture, or anyone who cannot verify compatibility with their kernel and existing FUSE setup.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 24 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why NTFS-3G targets cross-platform NTFS access
NTFS-3G solves a specific interoperability problem: reading and writing an NTFS filesystem on Linux, FreeBSD, macOS, NetBSD, OpenIndiana, QNX and Haiku. The README names support for NTFS used by Windows NT through Windows 11 and several Windows Server releases. Its intended users are people who move an NTFS volume between Windows and a supported Unix-like system, or who need to maintain that volume without formatting it as another filesystem. The project is aimed at hardware platforms and operating systems where reliable NTFS interoperability is needed. That is a narrower goal than providing a general-purpose replacement for every filesystem operation, and it explains why the project concentrates on NTFS metadata, ownership and Windows interoperability. The driver is implemented in C and follows a hybrid kernel/user space filesystem-driver approach. It also includes the ntfsprogs utilities for inspecting, repairing, formatting, resizing and recovering NTFS data.
The hybrid driver architecture and its data path
The README identifies NTFS-3G as a hybrid kernel/user space filesystem driver. In practical terms, the project can use a FUSE-based path while providing its own FUSE integration through the fuse-lite library. The repository layout separates the filesystem driver sources under src/, the shared filesystem library under libntfs-3g/, the lightweight FUSE library under libfuse-lite/, and command-line tools under ntfsprogs/. The documented configuration also provides an external FUSE mode, so the architecture is not limited to one integration choice. A mounted NTFS volume is exposed through a filesystem path such as /mnt/windows. The driver handles filesystem operations against that NTFS device, while applications use the mounted path through the operating system's normal filesystem interface. The README does not document the internal request path, thread model or buffering behavior in enough detail to make claims beyond that separation.
Installing NTFS-3G and mounting the first volume
The README recommends using the distribution package because most distributions have an up-to-date NTFS-3G package. That avoids requiring a source build for the usual case. For a customized installation, the documentation says to obtain the released source tarball, ensure that basic development tools and kernel headers with the FUSE kernel module are available, unpack the archive, and run the following commands. The build does not require the FUSE user space package according to the README.
./configure
make
make installThe README says to use `sudo make install` when the current user is not root. For a first read-write mount, replace the example device and mount point with the actual values. Unmount the volume first if it is already mounted, then run one of these commands as root:
mount -t ntfs-3g /dev/sda1 /mnt/windowsThe alternative invocation documented by the project is:
ntfs-3g /dev/sda1 /mnt/windowsThe reader should see the NTFS volume mounted at the selected mount point with read-write access. The manual page is identified by the README as the place for additional mount options. The example is not a substitute for checking the device path, filesystem state, mount permissions or any distribution-specific package behavior.
Boot mounting and test builds without installation
NTFS-3G can be tested without replacing an existing installation. The documented workflow configures and builds the source, then activates the generated scripts from the src directory. The test invocation is run as root and accepts the same general mount form as the installed command.
./configure
makesrc/ntfs-3g /dev/sda1 /mnt/windowsThe README says this creates the `ntfs-3g` and `lowntfs-3g` scripts in the src directory. To finish the test, unmount the volume in the usual way:
umount /dev/sda1For persistent mounting, the README instructs administrators to put an entry at the end of `/etc/fstab`:
/dev/sda1 /mnt/windows ntfs-3g defaults 0 0That placement requirement is explicit in the documentation. The example does not specify a mount option for error handling, automatic checking or device discovery. The README points to the manual page for other options, so teams that need stricter startup failure behavior or different defaults will need project-specific configuration beyond this example.
NTFS metadata, ACLs and compression support
Beyond ordinary file and directory access, NTFS-3G documents support for file ownership and permissions, POSIX ACLs, junction points and extended attributes. The source build has explicit switches for POSIX ACL support and system extended attribute mappings. These features matter when a volume moves between Windows and a Unix-like environment because access rules and filesystem metadata are not represented by file contents alone. The README also states that internally compressed files can be created, with parameter files in the `.NTFS-3G` directory potentially required, and that the newer compressed file formats available in Windows 10 can be read through a plugin. This is a mixed model. Some compression-related behavior is tied to configuration or plugins rather than being presented as an unconditional default. The `--disable-plugins` option can remove plugin support, while `--enable-xattr-mappings` and `--enable-posix-acls` enable particular build configurations. A prospective user should therefore distinguish between capabilities visible in a default build and capabilities selected at configure time.
Configuration choices and the FUSE dependency
The configure step exposes several choices that determine what gets built. `--disable-ntfsprogs` omits the utilities, `--enable-extras` builds more of them, `--disable-plugins` disables plugin support, and the ACL and extended-attribute options enable specific mappings. The README also lists partial make targets: `make libntfs`, `make libs`, `make drivers` and `make ntfsprogs`. The final target builds ntfsprogs and libntfs-3g without drivers. This separation is useful when a deployment needs only part of the project, but it also means that the expected feature set depends on the selected target and configure options. The documented external FUSE choice is an actual alternative to the bundled approach. With `--with-fuse=external`, the Linux default is overridden in favor of external FUSE. The README does not specify which external package versions are compatible or how this choice performs, so an adopter must compare that dependency with the distribution package or the bundled `fuse-lite` path rather than assuming the choices are interchangeable.
Operational limits and maintenance context
NTFS-3G is not a replacement for every NTFS administration task, and its own utilities have deliberately separate purposes. `ntfsfix` attempts to fix an NTFS partition and asks Windows to check NTFS, while `mkntfs` formats a partition. `ntfsresize` resizes volumes, `ntfsclone` creates or restores partition images, and `ntfsrecover` recovers updates committed by Windows but not synchronized before an interruption. These names describe the documented responsibilities; the README does not promise that every repair operation can be completed without Windows, or that recovery succeeds in every damaged-volume case. The project is not archived, and the last push was on 2026-09-29. Recent releases include 2026.9.28, 2026.7.7 and 2026.9.18. That maintenance record supports checking release notes for the exact platform and feature changes, but it does not remove the need to inspect the build and mounting configuration. NTFS-related components are distributed under GPL version 2 or a later version, while `fuse-lite` is under LGPLv2. Those are licensing terms to account for in redistribution and integration, not a legal conclusion.
Choosing NTFS-3G against an external FUSE setup
The clearest documented alternative is to select external FUSE instead of the default Linux integration. NTFS-3G normally documents a build that can use its own FUSE-related components, including the fuse-lite library. Passing `--with-fuse=external` changes the dependency direction by asking the build to use external FUSE. The project itself does not present this as a feature comparison with performance numbers, so the choice cannot be reduced to a claim that one mode is faster. The practical distinction is packaging and integration. A system administrator may prefer a distribution-managed external FUSE package if that is already part of the operating system's support policy. A user building an isolated or customized environment may prefer the default path because the README says NTFS-3G no longer requires the FUSE user space package. Either route still requires the kernel to include the FUSE kernel module according to the installation instructions. Neither route removes the need to verify mount behavior, permissions and volume state.
Editorial conclusion
NTFS-3G is appropriate for administrators and users who must read and write NTFS volumes on one of its documented platforms, especially when Windows interoperability requires ownership, permissions, ACLs or junction points. It is less suitable for users seeking only basic read access, environments that cannot support its userspace filesystem architecture, or anyone who cannot verify compatibility with their kernel and existing FUSE setup. Check the documented build dependencies, the required FUSE kernel support, and the volume mounting procedure before adopting it. On the documented edge branch, the last push was on 2026-09-29, and the listed releases include 2026.9.28, 2026.9.18 and 2026.7.7.
Frequently asked questions
How do I install NTFS-3G and mount an NTFS volume?
The README recommends installing the distribution package. For a source build, run `./configure`, `make` and `make install`, then mount the device with `mount -t ntfs-3g /dev/sda1 /mnt/windows` or `ntfs-3g /dev/sda1 /mnt/windows` as root.
Does NTFS-3G require the FUSE user space package?
The README states that NTFS-3G does not require the FUSE user space package anymore. It does require basic development tools for a source build and says that the kernel must include the FUSE kernel module.
Can NTFS-3G mount an NTFS filesystem at boot?
Yes. The README documents adding `/dev/sda1 /mnt/windows ntfs-3g defaults 0 0` at the end of `/etc/fstab`. The device and mount point are examples that must be changed for the actual system.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tuxera-ntfs-3g)Was this useful?