INTRODUCTION ============ The NTFS-3G driver is an open source, freely available read/write NTFS driver for Linux, FreeBSD, macOS, NetBSD, OpenIndiana, QNX and Haiku. It provides safe and fast handling of the Windows XP, Windows Server 2003, Windows 2000, Windows Vista, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012, Windows Server 2016, Windows 10 and Windows Server 2019 NTFS file systems. The purpose of the project is to develop, quality assurance and support a trustable, featureful and high performance solution for hardware platforms and operating systems whose users need to reliably interoperate with NTFS. Besides this practical goal, the project also aims to explore the limits of the hybrid, kernel/user space filesystem driver approach, performance, reliability and feature richness per invested effort wise. Besides the common file system features, NTFS-3G has support for file ownership and permissions, POSIX ACLs, junction points, extended attributes and creating internally compressed files (parameter files in the directory .NTFS-3G may be required to enable them). The new compressed file formats available in Windows 10 can also be read through a plugin. News, support answers, problem submission instructions, support and discussion forums, and other information are available on the project web site at https://github.com/tuxera/ntfs-3g/wiki The project has been funded, supported and maintained since 2008 by Tuxera: https://tuxera.com LICENSES ======== All the NTFS related components: the file system drivers, the ntfsprogs utilities and the shared library libntfs-3g are distributed under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the included file COPYING. The fuse-lite library is distributed under the terms of the GNU LGPLv2. See the included file COPYING.LIB. QUICK INSTALLATION ================== Most distributions have an up-to-date NTFS-3G package ready for use, and the recommended way is to install it. If you need some specific customization, you can compile and install from the released source code. Make sure you have the basic development tools and the kernel includes the FUSE kernel module. Then unpack the source tarball and type: ./configure make make install # or 'sudo make install' if you aren't root. Please note that NTFS-3G doesn't require the FUSE user space package any more. The list of options for building specific configurations is displayed by typing : ./configure --help Below are a few specific options to ./configure : --disable-ntfsprogs : do not build the ntfsprogs tools, --enable-extras : build more ntfsprogs tools, --disable-plugins : disable support for plugins --enable-posix-acls : enable support for Posix ACLs --enable-xattr-mappings : enable system extended attributes mappings --with-fuse=external : use external fuse (overriding Linux default) There are also a few make targets for building parts : make libntfs : only build the libntfs-3g library make libs : only build libntfs-3g (and libfuse-lite, if relevant) make drivers : only build drivers and libraries, without ntfsprogs make ntfsprogs : only build ntfsprogs and libntfs-3g, without drivers USAGE ===== If there was no error during installation then the NTFS volume can be read-write mounted for everybody the following way as the root user (unmount the volume if it was already mounted, and replace /dev/sda1 and /mnt/windows, if needed): mount -t ntfs-3g /dev/sda1 /mnt/windows or ntfs-3g /dev/sda1 /mnt/windows Please see the ntfs-3g manual page for more options and examples. You can also make NTFS to be mounted during boot by putting the below line at the END(!) of the /etc/fstab file: /dev/sda1 /mnt/windows ntfs-3g defaults 0 0 TESTING WITHOUT INSTALLING ========================= Newer versions of ntfs-3g can be tested without installing anything and without disturbing an existing installation. Just configure and make as shown previously. This will create the scripts ntfs-3g and lowntfs-3g in the src directory, which you may activate for testing: ./configure make then, as root: src/ntfs-3g [-o mount-options] /dev/sda1 /mnt/windows And, to end the test, unmount the usual way: umount /dev/sda1 NTFS UTILITIES ============== The ntfsprogs directory includes utilities for doing all required tasks to NTFS partitions. In general, just run a utility without any command line options to display the version number and usage syntax. The following utilities are so far implemented: ntfsfix - Attempt to fix an NTFS partition and force Windows to check NTFS. mkntfs - Format a partition with the NTFS filesystem. See man 8 mkntfs for command line options. ntfslabel - Display/change the label of an NTFS partition. See man 8 ntfslabel for details. ntfsundelete - Recover deleted files from an NTFS volume. See man 8 ntfsundelete for more details. ntfsresize - Resize NTFS volumes. See man 8 ntfsresize for details. ntfsclone - Efficiently create/restore an image of an NTFS partition. See man 8 ntfsclone for details. ntfscluster - Locate the owner of any given sector or cluster on an NTFS partition. See man 8 ntfscluster for details. ntfsinfo - Show some information about an NTFS partition or one of the files or directories within it. See man 8 ntfsinfo for details. ntfsrecover - Recover updates committed by Windows but interrupted before being synced. ntfsls - List information about files in a directory residing on an NTFS partition. See man 8 ntfsls for details. ntfscat - Concatenate files and print their contents on the standard output. ntfscp - Overwrite files on an NTFS partition. ntfssecaudit - Audit the security metadata. ntfsusermap - Assistance for building a user mapping file.
Ntfs-3g - NTFS-3G Safe Read/Write NTFS Driver
Overview
Comments
-
Fuse not needed, but building fails without it on Monterey
configure: error: FUSE >= 2.6.0 was not found. Either older FUSE is still present, or FUSE is not fully installed (e.g. fuse, libfuse, libfuse2, libfuse-dev, etc packages). Source code: http://fuse.sf.net
-
Minor autoconf improvements for portability
These two commits improve the portability of ntfs-3g on systems that do not use the standard Linux FHS (e.g. NixOS, Gobo, GuixSD, etc.).
- The first commit is a bugfix: ntfs-3g already uses rootsbindir/sbindir in most places but not everywhere.
- The second commit is a set of new configuration options for specifying the paths to
/sbin
helpers used at runtime by the ntfs-3g programs.
-
Copy NTFS files preserving all their attributes ?
Hi,
I've been looking for a way to copy NTFS directories preserving all attributes, ACLs, permissions, reparse points etc (surprisingly hard it turns out, short of cloning the whole partition).
I came across the wiki page on Extended Attributes which gives a bit of hope :
Looks like thentfscp.c
andntfscp.sh
additional tools do just that (!)What's the status on these ? Why are they not part of ntfs-3g ? Looks like that would be useful to a lot of people.
(As a side-note it was really confusing intially that it has the same name as ntfs-3g's ntfscp which seem something else entirely)
-
Migration from Sourceforge is not complete
Dear @tuxera team, @jpandre,
It will be nice to remove old parts like:
- https://sourceforge.net/p/ntfs-3g/cvs/
- https://sourceforge.net/p/ntfs-3g/_list/git
- https://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/edge/tree/
- https://sourceforge.net/p/ntfs-3g/old_ntfs-3g_ntfsprogs/ci/PERMISSION_HANDLING_BRANCH/tree/
- https://sourceforge.net/p/ntfs-3g/pjd-fstest/ci/master/tree/
Can you add a "move" box like https://sourceforge.net/projects/handbrake for example.
- https://sourceforge.net/projects/ntfs-3g/
To disable/delete tabs, go here: https://sourceforge.net/projects/ntfs-3g/ To add a new tab, go here: https://sourceforge.net/projects/ntfs-3g/ To change informations, go here: https://sourceforge.net/p/ntfs-3g/admin/overview To export, go here: https://sourceforge.net/p/ntfs-3g/admin/export
The new place can be added in:
- "Moved Project to", here: https://sourceforge.net/p/ntfs-3g/admin/overview
- "Preferred Support Page (for users of your project)", here: https://sourceforge.net/p/ntfs-3g/admin/overview
- A new tab, go here: https://sourceforge.net/projects/ntfs-3g/
The website link is not good in Sourceforge options (better to change with github.com too):
- http://www.tuxera.com/community/ntfs-3g-download/
Thanks in advance.
-
OneDrive: unsupported reparse tag 0x9000701a
I have a drive with an NTFS partition that OneDrive on Windows 10 is configured to sync to (I've tagged the whole onedrive folder with "keep offline" so everything is downloaded locally). However, when I use the latest version of ntfs-3g (2022.5.17) the folder shows up as a broken symlink, with the target listed as
unsupported reparse tag 0x9000701a
I also tried mounting the drive with the old version of ntfs-3g included with the distro (2017.3.23AR.3-3ubuntu1.2) and while that allowed me to see the contents of the folder, all files were broken links with
unsupported reparse point
I tried running ntfsinfo and got this debug information:
> sudo ntfsprogs/ntfsinfo --file "folder/OneDrive (synced)/OneDrive - [my organization]" /dev/sdb1 Dumping Inode 242195 (0x3b213) Upd. Seq. Array Off.: 48 (0x30) Upd. Seq. Array Count: 3 (0x3) Upd. Seq. Number: 43 (0x2b) LogFile Seq. Number: 0x4117129b MFT Record Seq. Numb.: 5 (0x5) Number of Hard Links: 2 (0x2) Attribute Offset: 56 (0x38) MFT Record Flags: IN_USE DIRECTORY Bytes Used: 712 (0x2c8) bytes Bytes Allocated: 1024 (0x400) bytes Next Attribute Instance: 28 (0x1c) MFT Padding: 00 00 Dumping attribute $STANDARD_INFORMATION (0x10) from mft record 242195 (0x3b213) Resident: Yes Attribute flags: 0x0000 Attribute instance: 0 (0x0) Data size: 72 (0x48) Resident flags: 0x00 File Creation Time: Tue Jun 28 00:19:56 2022 UTC File Altered Time: Wed Jun 29 04:17:41 2022 UTC MFT Changed Time: Wed Jun 29 04:17:41 2022 UTC Last Accessed Time: Wed Jun 29 07:01:07 2022 UTC File attributes: READONLY ARCHIVE REPARSE_POINT UNKNOWN: 0x00080000 (0x00080421) Maximum versions: 0 Version number: 0 Class ID: 0 User ID: 0 (0x0) Security ID: 282 (0x11a) Quota charged: 0 (0x0) Update Sequence Number: 394371712 (0x1781a280) Dumping attribute $ATTRIBUTE_LIST (0x20) from mft record 242195 (0x3b213) Resident: No Attribute flags: 0x0000 Attribute instance: 11 (0xb) Compression unit: 0 (0x0) Data size: 392 (0x188) Allocated size: 4096 (0x1000) Initialized size: 392 (0x188) Dumping attribute $FILE_NAME (0x30) from mft record 242195 (0x3b213) Resident: Yes Attribute flags: 0x0000 Attribute instance: 3 (0x3) Data size: 82 (0x52) Resident flags: 0x01 Parent directory: 239101 (0x3a5fd) File Creation Time: Tue Jun 28 00:19:56 2022 UTC File Altered Time: Tue Jun 28 00:19:56 2022 UTC MFT Changed Time: Tue Jun 28 00:19:56 2022 UTC Last Accessed Time: Tue Jun 28 00:19:56 2022 UTC Allocated Size: 0 (0x0) Data Size: 0 (0x0) Filename Length: 8 (0x8) File attributes: I30_INDEX (0x10000000) Namespace: DOS Filename: 'ONEDRI~1' Dumping attribute $FILE_NAME (0x30) from mft record 242204 (0x3b21c) Resident: Yes Attribute flags: 0x0000 Attribute instance: 0 (0x0) Data size: 136 (0x88) Resident flags: 0x01 Parent directory: 239101 (0x3a5fd) File Creation Time: Tue Jun 28 00:19:56 2022 UTC File Altered Time: Tue Jun 28 00:19:56 2022 UTC MFT Changed Time: Tue Jun 28 00:19:56 2022 UTC Last Accessed Time: Tue Jun 28 00:19:56 2022 UTC Allocated Size: 0 (0x0) Data Size: 0 (0x0) Filename Length: 35 (0x23) File attributes: I30_INDEX (0x10000000) Namespace: Win32 Filename: 'OneDrive - [my organization]' Dumping attribute $DATA (0x80) from mft record 242204 (0x3b21c) Resident: No Attribute name: '${3D0CE612-FDEE-43f7-8ACA-957BEC0CCBA0}.SyncRootIdentity' Attribute flags: 0x0000 Attribute instance: 1 (0x1) Compression unit: 0 (0x0) Data size: 272 (0x110) Allocated size: 4096 (0x1000) Initialized size: 272 (0x110) Dumping attribute $INDEX_ROOT (0x90) from mft record 242195 (0x3b213) Resident: Yes Attribute name: '$I30' Attribute flags: 0x0000 Attribute instance: 13 (0xd) Data size: 56 (0x38) Resident flags: 0x00 Indexed Attr Type: DIRECTORY_I30 Collation Rule: 1 (0x1) Index Block Size: 4096 (0x1000) Clusters Per Block: 1 (0x1) Entries Offset: 16 (0x10) Index Size: 40 (0x28) Allocated Size: 40 (0x28) Index header flags: 0x01 Index entries total: 1 Dumping attribute $INDEX_ALLOCATION (0xa0) from mft record 242195 (0x3b213) Resident: No Attribute name: '$I30' Attribute flags: 0x0000 Attribute instance: 9 (0x9) Compression unit: 0 (0x0) Data size: 32768 (0x8000) Allocated size: 32768 (0x8000) Initialized size: 32768 (0x8000) Index entries total: 171 INDX blocks total: 8 Dumping attribute $BITMAP (0xb0) from mft record 242195 (0x3b213) Resident: Yes Attribute name: '$I30' Attribute flags: 0x0000 Attribute instance: 10 (0xa) Data size: 8 (0x8) Resident flags: 0x00 Dumping attribute $REPARSE_POINT (0xc0) from mft record 242195 (0x3b213) Resident: Yes Attribute flags: 0x0000 Attribute instance: 27 (0x1b) Data size: 116 (0x74) Resident flags: 0x00 Reparse tag: 0x9000701a (Cloud) Data length: 108 (0x6c) Data: 0x01006c0046655270ed47d01a6800000002000a0007000100600000000a000400... End of inode reached
-
NTFS allows files ending with blank/period when mounted as root but not when mounted as user
Looking into the issue https://github.com/rdiff-backup/rdiff-backup/issues/579 I noticed a discrepancy in behaviour depending if a NTFS file system is mounted as root or non-root (we're talking about the same file system freshly created with
sudo mkfs.ntfs /dev/sda1
on a USB stick):$ udisksctl mount -b /dev/sda1 $ mount | grep sda1 /dev/sda1 on /run/media/myuser/5291712E0E79C514 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2 $ cd /run/media/myuser/5291712E0E79C514 $ touch a $ touch 'a ' touch: setting times of 'a ': No such file or directory $ touch 'a.' touch: setting times of 'a.': No such file or directory $ ll total 0 -rwxrwxrwx. 1 myuser myuser 0 May 26 07:44 a
vs.
$ sudo mount -t ntfs -o nosuid,nodev,uid=1000,gid=1000 /dev/sda1 /mnt # to make sure the mount options are the same $ mount | grep sda1 /dev/sda1 on /mnt type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) $ touch a $ touch 'a ' $ touch 'a.' $ ll total 0 -rwxrwxrwx. 1 myuser myuser 0 May 26 07:47 a -rwxrwxrwx. 1 myuser myuser 0 May 26 07:47 'a ' -rwxrwxrwx. 1 myuser myuser 0 May 26 07:47 a.
And I can't find any reason for the difference in behaviour.
-
configure.ac: fix bashism in fuse check
configure scripts need to be runnable with a POSIX-compliant /bin/sh.
On many (but not all!) systems, /bin/sh is provided by Bash, so errors like this aren't spotted. Notably Debian defaults to /bin/sh provided by dash which doesn't tolerate such bashisms as '=='.
This retains compatibility with bash.
Fixes configure warnings/errors like:
checking Windows OS... no ./configure: 13360: test: xinternal: unexpected operator checking for pthread_create in -lpthread... yes checking Solaris OS... no
Signed-off-by: Sam James [email protected]
-
how to support the other character set, such as GBK
the system has support "zh_CN.gbk", and i mounted the usb disk by "mount -t ntfs-3g -o locale=zh_CN.gbk /dev/xxx /mount_path". But I still can not create gbk filename. eg: [root@RV1126_RV1109:/]# mount -t ntfs-3g -o locale=zh_CN.gbk /dev/sda1 /tmp/udisk/ [root@RV1126_RV1109:/]# [root@RV1126_RV1109:/]# cd /tmp/udisk/ [root@RV1126_RV1109:/tmp/udisk]# touch 你好 touch: cannot touch ''$'\304\343\272\303': Invalid or incomplete multibyte or wide character
-
Autogen warning message.
Autogen brings this error message (although it completes successfully and I can't see any negative effects):
libtoolize: Remember to add 'LT_INIT' to configure.ac.
The entire console output (including the above message) is here:
>./autogen.sh Running autoreconf --verbose --install --force autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal --force -I m4 autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy --force libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' libtoolize: Remember to add 'LT_INIT' to configure.ac. autoreconf: running: /usr/bin/autoconf --force autoreconf: running: /usr/bin/autoheader --force autoreconf: running: automake --add-missing --copy --force-missing configure.ac:189: installing './compile' configure.ac:32: installing './config.guess' configure.ac:32: installing './config.sub' configure.ac:36: installing './install-sh' configure.ac:36: installing './missing' Makefile.am: installing './INSTALL' libfuse-lite/Makefile.am: installing './depcomp' autoreconf: Leaving directory `.' >
I compiled NTFS-3G, at my 2 systems here: PCLinux and Devuan.
-
It should be possible to cancel mkfs.ntfs
Example:
# mkfs.ntfs /dev/sdc1 Cluster size has been automatically set to 4096 bytes. Initializing device with zeroes: 4%^C^C^C^C^C^C^C^C^C^C^C^C^C^C
And no matter how many
Ctrl+C
I press, it keeps creating the filesystem on the disk. Shouldn'tmkfs.ntfs
stop after aCtrl+C
? Isn't it possible to captureSIGINT
and stops whatevermkfs.ntfs
is doing, please?ntfs-3g
is Debian's2021.8.22-3
Linux kernel is5.15.15
Thanks!
-
Heap overflow in ntfsck
Hello.
I have found a vulnerability in the NTFS-3G driver, specifically in the ntfsck tool (see: ntfsprogs/ntfsck.c).
In the check_file_record function, the update sequence array is applied, but no proper boundary checks are implemented, so the function can write bytes from the update sequence array beyond the buffer being checked.
The vulnerable code is here:
usa_ofs = le16_to_cpu(mft_rec->usa_ofs); usa_count = le16_to_cpu(mft_rec->usa_count); [...] // Remove update seq & check it. usa = *(u16*)(buffer+usa_ofs); // The value that should be at the end of every sector. assert_u32_equal(usa_count-1, buflen/NTFS_BLOCK_SIZE, "USA length"); for (i=1;i<usa_count;i++) { u16 *fixup = (u16*)(buffer+NTFS_BLOCK_SIZE*i-2); // the value at the end of the sector. u16 saved_val = *(u16*)(buffer+usa_ofs+2*i); // the actual data value that was saved in the us array. assert_u32_equal(*fixup, usa, "fixup"); *fixup = saved_val; // remove it. }
If buflen is 1024, but the update sequence array contains 4 entries (including the first one, which you call usa), the loop will replace bytes 3 times, at the following offsets:
buffer+512*1−2
(within the buffer),buffer+512*2−2
(within the buffer),buffer+512*3−2
(beyond the allocated buffer size). (The offset of the first attribute should be set to make room for additional entries in the update sequence array, so the usa_ofs+usa_count <= attrs_offset check is passed.)Thus, bytes beyond the allocated buffer can be replaced, this is a heap overflow.
It should be noted that the assert_u32_equal function just reports the errors, it doesn’t terminate the execution flow.
Since the ntfsck tool is used in some GNU/Linux distributions (it’s fsck.ntfs in Fedora), I strongly suggest implementing a fix.
Report date (to info at tuxera dot com): 2021-09-24. No reply. Ping (to info at tuxera dot com): 2021-09-29. No reply.
-
What are the optimal ntfs-3g or kernel parameters/tunables for use with SMR media?
You can see from the title that this is NOT a bug. Please flag it as discussion. Maybe, if we reach some result, you can put it in the Wiki.
Description
I have searched low and high, but could practically find nothing about what ntfs-3g parameters and/or kernel I/O scheduler tunables to use when dealing with SMR (Shingled Magnetic Recording) media. In my situation, the SMR media are 2.5" external USB3 HDDs (not SSDs), encrypted with Truecrypt or Veracrypt. When I try to initially fill such a disk with backups, basically consisting of thousands of small (500K-2M) files, with, say, rsync, the write throughput slows down after the first 10-20 Gigabytes to a crawling 1MB/sec (one _Mega_byte per second)!
System
Gentoo Linux, 5.4.196 kernel, lots of RAM, ntfs3g-2022.10.3.
Suggestions
Searching around, I found (I should say stumbled, as it was rather by chance - I was searching for "How to increase file cache with ntfs-3g", rather than "Which I/O scheduler tunables to use with ntfs-3g and SMR media", which brings up nothing of interest in my search engine of choice), the following suggestion in Can I configure my Linux system for more aggressive file system caching?:
#!/bin/bash modprobe bfq for d in /sys/block/sd?; do # HDD (tuned for Seagate SMR drive) echo bfq >"$d/queue/scheduler" echo 4 >"$d/queue/nr_requests" echo 32000 >"$d/queue/iosched/back_seek_max" echo 3 >"$d/queue/iosched/back_seek_penalty" echo 80 >"$d/queue/iosched/fifo_expire_sync" echo 1000 >"$d/queue/iosched/fifo_expire_async" echo 5300 >"$d/queue/iosched/slice_idle_us" echo 1 >"$d/queue/iosched/low_latency" echo 200 >"$d/queue/iosched/timeout_sync" echo 0 >"$d/queue/iosched/max_budget" echo 1 >"$d/queue/iosched/strict_guarantees" done
However, this is not directly applicable in my case: it is for the bfq scheduler, while I have the mq-deadline scheduler.
What I tried
For me the tunables in question were the tunables of mq-deadline:
for l in c d; do echo "+++"; echo "sd$l"; echo "+++"; \ echo ''; d=/sys/block/sd$l/queue; echo -n "Scheduler: "; \ cat "$d/scheduler"; echo '-----------------------------'; \ echo -n "nr_requests: "; cat $d/nr_requests; echo '';\ for v in $(ls $d/iosched/); do echo -n "$v:";\ cat $d/iosched/$v; echo ''; done; echo ''; echo ''; done +++ sdc +++ Scheduler: [mq-deadline] none ----------------------------- nr_requests: 2 fifo_batch:16 front_merges:1 read_expire:500 write_expire:5000 writes_starved:2 +++ sdd +++ Scheduler: [mq-deadline] none ----------------------------- nr_requests: 2 fifo_batch:16 front_merges:1 read_expire:500 write_expire:5000 writes_starved:2
I have tried to set them to higher values:
fifo_batch=65536 nr_requests=32 write_expire=30000
I also set the kernel virtual memory management tunables:
dirty_background_ratio=30 dirty_ratio=50 dirty_expire_centisecs=72000 sysctl vm.dirty_background_ratio=$dirty_background_ratio sysctl vm.dirty_ratio=$dirty_ratio sysctl vm.dirty_expire_centisecs=$dirty_expire_centisecs
The guiding idea behind all these settings was: increase file cache, keep the copied files in the cache as long as possible, increase the write batch - in general: write as many bytes as you can in one batch to the drive. The hope was that the more data I would write at once, the more consecutive I/O writes I would send to the drive, increasing the chance that the "zones" (pieces of 256MB consecutive data) would be written sequentially. Remember, the drives may be encrypted, which increases the entropy (data that were neighbors in the source filesystem, will be scattered around randomly). Since the data looks random to the drive, I hoped to gather as many consecutive ones as possible by gathering them in the file cache or a "write batch".
In line with the above considerations I also
- mounted the drive(s) with the
big_writes
mount option of ntfs-3g - tried to increase the commit interval, but found no option analogous to the
commit
mount option of ext4, orsysctl fs.xfs.xfssyncd_centisecs=XXX
for XFS - enabled write-back:
write_cache='write back' echo "$write_cache" > /sys/block/$dev/queue/write_cache
Nothing worked. While
big_writes
did write large amounts of data at once, after the first 10, 20 GB, throughput grinded to a halt, with the drive being busy, while rsync stopped sending data, waiting for the drive's O.K. Average write throughput: ~1MB/sec.At this point I am out of ideas. What would you suggest? Is anything that can be done to increase write performance of drive-managed SMR disks with ntfs-3g?
- mounted the drive(s) with the
-
ntfsfix can not correct MFT errors
After plug out sdcard and plug in again, though ntfsfix print ok and mount normally, but from logs MFT errors occurred:
ntfs3: sdg1: Inode r=1d is not in use! ntfs3: sdg1: MFT: r=3c, expect seq=1 instead of 4! ntfs3: sdg1: MFT: r=3c, expect seq=2 instead of 4! ntfs3: sdg1: MFT: r=3c, expect seq=3 instead of 4! ...
and the sdcard can not use normally, can not create or remove files. are there any way ntfsfix can correct these errors, how i can fix these errors from linux?
-
Memory access error with ntfssecaudit on Ubuntu
I get this error on Ubuntu 22.04:
$ LC_ALL=C ntfssecaudit /media/pitpat/System/Dokumente\ und\ Einstellungen/Administrator/Desktop/Suse\ Euro-Bilanz.xls ntfssecaudit 1.5.0 : NTFS security data auditing File /media/pitpat/System/Dokumente und Einstellungen/Administrator/Desktop/Suse Euro-Bilanz.xls Windows attrib : 0x4020 ** Could not find the user mapping file Windows owner S-1-5-21-746137067-2049760794-682003330-500 Windows group S-1-5-21-746137067-2049760794-682003330-513 Interpreted Unix owner 0, group 0, mode 0700 Speicherzugriffsfehler (Speicherabzug geschrieben)
My worry is about the last line in the output (unfortunately
LC_ALL=C
didn't translate it): German: Speicherzugriffsfehler (Speicherabzug geschrieben) English: Memory access error (Memory extract written)Additionally I can not open the file for read or copy it to somewhere (permission denied (13) ). I suspect, it is a consequence of the memory access error. There are many files on that volume I want to backup with that error, but 90 % of the files copy without problems. So additionally I'm asking for a quick workaround to backup the files. As the original permissions don't matter, may be there is a way just to delete the existing ACLs somehow?
ntfsfix
orchkdsk /F
with Windows didn't help.Here the verbose output with
sudo
(this time without "Memory extract written"):$ LC_ALL=C sudo ntfssecaudit -vv /media/pitpat/System/Dokumente\ und\ Einstellungen/Administrator/Desktop/Suse\ Euro-Bilanz.xls ntfssecaudit 1.5.0 : NTFS security data auditing File /media/pitpat/System/Dokumente und Einstellungen/Administrator/Desktop/Suse Euro-Bilanz.xls 000000 01000484 90000000 ac000000 00000000 000010 14000000 02007c00 04000000 00101800 000020 ff011f00 01020000 00000005 20000000 000030 20020000 00102400 ff011f00 01050000 000040 00000005 15000000 eb25792c 1ade2c7a 000050 828ba628 f4010000 00102400 ff011f00 000060 01050000 00000005 15000000 a43b9221 000070 b7e88c6d 8af61665 ec030000 00101400 000080 ff011f00 01010000 00000005 12000000 000090 01050000 00000005 15000000 eb25792c 0000a0 1ade2c7a 828ba628 f4010000 01050000 0000b0 00000005 15000000 eb25792c 1ade2c7a 0000c0 828ba628 01020000 Computed hash : 0x81348146 Windows attrib : 0x4020 ** Could not find the user mapping file Global header revision 1 flags 0x8404 DACL present DACL was inherited automatically self relative descriptor Off USID 0x90 Off GSID 0xac Off SACL 0x0 Off DACL 0x14 Owner SID Administrator SID O:hex S-1-5-15-2c7925eb-7a2cde1a-28a68b82-1f4 O:dec S-1-5-21-746137067-2049760794-682003330-500 Group SID Domain Users SID G:hex S-1-5-15-2c7925eb-7a2cde1a-28a68b82-201 G:dec S-1-5-21-746137067-2049760794-682003330-513 DACL revision 2 ACL size 124 ACE cnt 4 ACE 1 at 0x1c type 0 Access allowed flags 0x10 ACE was inherited Size 0x18 Acc rgts 0x1f01ff Obj specific acc rgts 0x1ff Read data Write data Append data Read EA Write EA Execute Read attributes Write attributes standard acc rgts 0x1f Delete Read control Write DAC Write owner Synchronize SID at 0x24 Administrators SID hex S-1-5-20-220 dec S-1-5-32-544 Summary : grant rwx applied ACE 2 at 0x34 type 0 Access allowed flags 0x10 ACE was inherited Size 0x24 Acc rgts 0x1f01ff Obj specific acc rgts 0x1ff Read data Write data Append data Read EA Write EA Execute Read attributes Write attributes standard acc rgts 0x1f Delete Read control Write DAC Write owner Synchronize SID at 0x3c Administrator SID hex S-1-5-15-2c7925eb-7a2cde1a-28a68b82-1f4 dec S-1-5-21-746137067-2049760794-682003330-500 Summary : grant rwx applied to owner ACE 3 at 0x58 type 0 Access allowed flags 0x10 ACE was inherited Size 0x24 Acc rgts 0x1f01ff Obj specific acc rgts 0x1ff Read data Write data Append data Read EA Write EA Execute Read attributes Write attributes standard acc rgts 0x1f Delete Read control Write DAC Write owner Synchronize SID at 0x60 Local user-1004 SID hex S-1-5-15-21923ba4-6d8ce8b7-6516f68a-3ec dec S-1-5-21-563231652-1837951159-1696003722-1004 Summary : grant rwx applied ACE 4 at 0x7c type 0 Access allowed flags 0x10 ACE was inherited Size 0x14 Acc rgts 0x1f01ff Obj specific acc rgts 0x1ff Read data Write data Append data Read EA Write EA Execute Read attributes Write attributes standard acc rgts 0x1f Delete Read control Write DAC Write owner Synchronize SID at 0x84 Local System SID hex S-1-5-12 dec S-1-5-18 Summary : grant rwx applied No SACL Windows owner S-1-5-21-746137067-2049760794-682003330-500 Windows group S-1-5-21-746137067-2049760794-682003330-513 Interpreted Unix owner 0, group 0, mode 0700 Speicherzugriffsfehler
-
Mounting takes a long time with big UserMapping file
Hi,
I try to get correct user mappings for a NTFS partition (inside VHDX backup) but so far failed. First I tried running the gauntlet with ntfsusermap but out of 5 folders I tested afterwarts only one had correct ownership. I love that this tool gives you no option to correct mistakes without running to the end. Then I tried to get the user mapping with LDAPsearch from our AD and had build a UserMapping with around 3300 entries. The mount command now hangs on me since 30 minutes. Don't know yet if it will succeed in the end. Also I'm pretty confused why I can't find a way to make NTFS-3G look up SIDs through Samba/Winbind which is configured and working fine on the workstation in question.
Issues
- I think I overwelmed the thing with my UserMapping which I consider a bug.
- NTFS-3G doesn't seem to cooperate at all with Samba. Winbind already has all the information which NTFS-3G needs for user mapping. What can I do about that?
Sorry for mixing up multiple problems here.
Br, Thomas
EDIT: Gave up waiting for mount because of fear of kernel mode memory corruptions.
-
List xattrs in system namespace
Is there a reason that
ntfs_fuse_listxattr_common
does not list the virtual xattrs (eg.system.ntfs_attrib
)? Its confusing that, for instance,system.ntfs_attrib
can have a value as returned bygetxattr
, but it will not show up inlistxattr
. If its undesirable for the xattrs to be listed in some cases, perhaps there can be an option when mounting to enable/disable the listing of these xattrs.
Releases(2022.10.3)
-
2022.10.3(Oct 31, 2022)
Security release 2022.10.3 (Oct 3, 2022) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz
Changes:
- Rejected zero-sized runs
- Avoided merging runlists with no runs
Source code(zip)
-
2022.5.17(May 26, 2022)
Security release 2022.5.17 (May 26, 2022) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.5.17.tgz
Changelog:
- Improved defence against maliciously tampered NTFS partitions
- Improved defence against improper use of options
- Updated the documentation
Source code(zip)
-
2021.8.22(Aug 30, 2021)
Stable Version 2021.8.22 (August 30, 2021) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2021.8.22.tgz
Changelog:
- Fixed compile error when building with libfuse < 2.8.0
- Fixed obsolete macros in configure.ac
- Signalled support of UTIME_OMIT to external libfuse2
- Fixed an improper macro usage in ntfscp.c
- Updated the repository change in the README
- Fixed vulnerability threats caused by maliciously tampered NTFS partitions
Source code(zip)
-
2017.3.23AR.6(Aug 30, 2021)
Stable Version 2017.3.23AR.6 (February 1, 2021) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23AR.6.tgz
Changelog:
- Used kernel cacheing on read-only mounts or with lowntfs-3g
- Avoided information leak when processing garbled compressed data
- Defined option posix_nlink to compute a Posix compliant st_nlink
- Recovered space when an index root is shortened
- Replaced ENODATA with ENOATTR in xattrs functions for macOS
- Added support for 'position' argument in macOS xattr functions
- Changed default xattr access method to 'openxattr' for macOS builds
- Allowed redefining the target location of the ntfsprogs tools
- Fixed updating the allocated size when attribute lies in an extent
- Enabled actions on directories in reparse plugins
- Inserted the reparse tag in the bad reparse symlink
- Supported use of WSL special files
- Dropped rejecting having both EA and reparse data
- Enabled Creating special files the same way as WSL
- Checked the locations of MFT and MFTMirr at startup
Source code(zip)
-
2017.3.23AR.5(Aug 31, 2021)
Stable Version 2017.3.23AR.5 (April 1, 2020)
Changelog:
- Processed the request argument of ioctl() as unsigned
- Accepted alternative recording of cluster size
- Fixed a poorly sized string in ntfsinfo
- Fixed ntfsfallocate on a void file
- Decoded execlink reparse points
- Fixed object type returned in readdir() for reparse points
- Exported the translations of Windows paths to current ones
Source code(zip)
-
2017.3.23AR.4(Aug 31, 2021)
Stable Version 2017.3.23AR.4 (March 1, 2019)
Changelog:
- Fixed reporting an error when failed to build the mountpoint
- Reverted accessing reparse directory through internal plugins
- Cleaned object ids beyond the updated part
- Fixed reacting to missing plugin
- Returned a low level error when an ioctl fails
- Truncated SSD trimming zones to granularity supported by the device
Source code(zip)
-
2017.3.23AR.3(Aug 31, 2021)
Stable Version 2017.3.23AR.3 (September 1, 2018)
Changelog:
- Made sure log file buffers are properly aligned
- Made reparse directories visible through internal plugins
- Added an option to ntfscp to copy the modification time
- Renamed undeleted files to avoid overwriting existing ones
- Extended the allowed cluster size to 2MB
- Allocated full clusters for reading and rescuing in ntfsclone
- Prevented locally defined headers from interfering with ntfs-3g ones
- Attempted mounting read-only after failed permission to read-write
- Fixed collecting the label argument in mkntfs
Source code(zip)
-
2017.3.23AR.2(Aug 31, 2021)
Stable Version 2017.3.23AR.2 (March 1, 2018)
Changelog:
- Made sure log file buffers are properly aligned
- Checked log file blocks more recent than temporary ones
- Processed redo log actions associated to undoing a CompensationlogRecord
- Allowed setting a file object id without defining its birth ids
- Documented read-only mount when Windows is hibernated
- Stopped checking matches of MFTMirr against MFT at record 16
- Filtered out reparse flags for selecting plugins
- Delayed updating the MFT runlist when resizing in read-only mode
- Double-checked whether record 15 is an extent of MFT
- Checked whether the device to mount was forced read-only
Source code(zip)
-
2017.3.23AR.1(Aug 31, 2021)
Stable Version 2017.3.23AR.1 (October 1, 2017)
Changelog:
- Bypassed cluster allocation errors using --ignore-fs-check in ntfsclone
- Upgraded ntfsrecover to support log files for Windows 10
- Fixed the computation of highest_vcn when applying a runlist fixup
- Fixed updating the vcn of subtree in ntfsrecover
- Relaxed checks on security descriptors
- Enabled directory operations in plugins
- Decoded more reparse tags in ntfsinfo
- Logged falling back to mounting read-only
- Fixed compiling on MacOSX (Erik Larsson)
Source code(zip)
-
2017.3.23(Aug 30, 2021)
Stable Version 2017.3.23 (March 28, 2017) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2017.3.23.tgz
Changelog:
- Delegated processing of special reparse points to external plugins
- Allowed kernel cacheing by lowntfs-3g when not using Posix ACLs
- Enabled fallback to read-only mount when the volume is hibernated
- Made a full check for whether an extended attribute is allowed
- Moved secaudit and usermap to ntfsprogs (now ntfssecaudit and ntfsusermap)
- Enabled encoding broken UTF-16 into broken UTF-8
- Autoconfigured selecting <sys/sysmacros.h> vs <sys/mkdev>
- Allowed using the full library API on systems without extended attributes support
- Fixed DISABLE_PLUGINS as the condition for not using plugins
- Corrected validation of multi sector transfer protected records
- Denied creating/removing files from $Extend
- Returned the size of locale encoded target as the size of symlinks
Source code(zip)
-
2016.2.22(Aug 30, 2021)
Stable Version 2016.2.22 (March 21, 2016) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2016.2.22.tgz
- Changes to NTFS-3G:
- Write as much data as possible in compressed attribute pwrite
- Fixed getting space for making an index non resident
- Alleviated constraints relative to reparse points
- Fixed special case of decompressing a runlist
- Fixed returning the trimming count to fstrim()
- Fixed the range of valid subauthority counts in a SID
- Updated the read-only flag even when the security attribute was cached
- Defended against reusing data from an invalid MFT record
- Simplified NTFS ACLs when group same as owner and same permission as world
- Packed/unpacked st_rdev transported as 32-bits on Solaris 64-bits
- Zero uninitialized bytes before writing compressed data
- Clear the environment when starting mount or umount
- Implemented rewinding a directory in lowntfs-3g
- Use incremental offsets when reading a directory in lowntfs-3g
- Changes to Ntfsprogs:
- Changes to mkntfs: a) Make installing mkntfs /sbin symlinks dependent on ENABLE_MOUNT_HELPER b) Mention the starting sector when it overflows in mkntfs c) Upgraded the upper-case table to same as Windows 7, 8 and 10
- Changes to ntfsresize: Fixed relocating the MFT runlists, decode the full list of bad clusters & fixed resizing an extended bad cluster list
- Changes to ntfsclone: Decoded the full list of bad clusters
- Changes to ntfsinfo: Displayed reparse point information
- Changes to ntfsdecrypt: Fixed DESX decryption
- Changes to ntfswipe: Added clarifications about several options to the manual
- New ntfsprogs tool: Included ntfsrecover to recover the updates committed by Windows (experimental)
- Overall: Made a general cleanup of endianness types for easier checks
Source code(zip)
- Changes to NTFS-3G:
-
2015.3.14(Aug 31, 2021)
Stable Version 2015.3.14 (March 31, 2015) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2015.3.14.tgz
- Changes to NTFS-3G:
- Fixed inserting a new ACL after wiping out by chkdsk
- Fixed Windows-type inheritance
- Fixed ignoring the umask mount option when permissions are used
- Fixed checking permissions when Posix ACLs are compiled in but not enabled
- Disabled option remove_hiberfile on read-only mounts
- Implemented an extended attribute to get/set EAs
- Avoid full runlist updating in more situations
- Update ctime after setting an ACL
- Use MFT record 15 for the first extent to MFT:DATA
- Ignore the sloppy mount option (-s)
- Implemented FITRIM (fstrim) ioctl
- Reengineered the compression algorithm
- Changes to ntfsprogs:
- Return success from ntfsprogs utilities with options –version and the like
- Implemented configure option –enable-quarantined for non functional utilities
- Added manuals for ntfsdecrypt, ntfswipe, ntfstruncate and ntfsfallocate
Source code(zip)
- Changes to NTFS-3G:
-
2014.2.15(Aug 31, 2021)
Stable Version 2014.2.15 (January 23, 2014) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2014.2.15.tgz
Changelog:
- libntfs-3g: added use of hd library to get the legacy BIOS geometry
- libntfs-3g: switched to /proc/mounts for checking existing mounts
- libntfs-3g: fixed usa checking by ntfsck on 4K sector disks
- libntfs-3g: fixed processing compressed data beyond file size (Windows 8 compliance)
- libntfs-3g: fixed expanding a resident attribute without inserting holes
- libntfs-3g: allow DACLs to not have any ACE
- libntfs-3g: ignore unmapped regions when checking whether sparse
- libntfs-3g: upgraded the Win32 interface for use with ntfsprogs
- ntfsresize: enabled relocating the MFT when shrinking a volume
- ntfsresize: fixed trying to update the MFT and Bitmap on a test run
- ntfsresize: fixed updating all the MFT runs in a relocated MFT
- ntfsresize: set the backup boot sector when the size is reliable
- ntfsresize: reserved a single sector for the backup boot sector
- ntfsundelete: output the modification time when scanning files
- ntfsundelete: ported to Windows
- ntfsclone: fixed wiping fragmented metadata when creating a metadata image
- ntfsclone: allowed cloning a file system despite allocation errors
- ntfsclone: fixed bad copying of the backup boot sector
- ntfsclone: ported to Windows
- ntfsdecrypt: made compatible with libgrypt-1.6
Source code(zip)
-
v2013_1_13(Aug 31, 2021)
Stable Version 2013.1.13 (January 14, 2013) Download: https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2013.1.13.tgz
Changelog:
- ntfs-3g: fixed returned files types in readdir()
- ntfs-3g: force option ‘ro’ when mounting a read-only device
- ntfs-3g: keep the name of a deleted file in place for easier undeletion
- ntfs-3g: accept multiple read-only mounts
- ntfs-3g: improved Windows-type ACL inheritance, as needed by Windows 8
- ntfs-3g: avoid unnecessary runlist update when appending data to a file
- ntfs-3g: added inheritance of the set-group-id flag
- ntfs-3g: deny mounting when fast restart mode of Windows 8 is detected
- ntfs-3g: reject getting/setting DOS names on hard linked files
- ntfsclone: fixed wiping user data when creating metadata images
- ntfsclone: implemented a new option to set a new serial number
- ntfsfix: implemented fixing the backup boot sector
- ntfsfix: fixed clearing the bad cluster list
- ntfsinfo: added allocation data to the volume parameters summary
- ntfsinfo: output the numbers of runs and fragments for the selected file
- ntfslabel: implemented a new option to set a new serial number
- ntfswipe: added optional wiping of file tails and undelete data
- mkntfs: insert an $Info stream in $UpCase to comply with Windows 8
- openindiana: merged OpenIndiana requirements into the driver and fuse-lite
Source code(zip)
-
v2012_1_15(Aug 31, 2021)
Stable Version 2012.1.15 (January 22, 2012) Download: https://tuxera.com/opensource/obsolete/ntfs-3g_ntfsprogs-2012.1.15.tgz
Changelog:
- ntfs-3g: fixed device path canonicalization for use by devmapper
- ntfs-3g: fixed setting DOS names when defined with lower-case chars
- ntfs-3g: fixed attribute flags controlling recursive writes
- ntfs-3g: fixed compilation on OpenIndiana
- ntfs-3g: fixed options parsing on OSes with no extended attributes
- ntfs-3g: fixed relatime as a default mount option
- ntfs-3g: fixed endless recursion when MFT extents are described by themselves
- ntfs-3g: fixed the description of inherit option
- ntfs-3g: fixed overwriting a truncated file
- ntfs-3g: fixed truncation of DOS file names (12 ntfschars, not 12 utf8 chars)
- ntfs-3g: fixed the setting of attributes by secaudit (index not synced)
- ntfs-3g: faster compression
- ntfs-3g: new option delay_mtime to delay updates of mtime+ctime
- ntfsfix: new option -d to clear the dirty flag if fix is successful
- ntfsfix: fixed volume dirty flag test
- ntfsfix: new option to clear the list of bad sectors
- ntfsfix: fixed compilation on Sparc
- ntfsfix: fixed a bug causing a segmentation violation
- ntfsfix: repair self-located MFT data bug
- ntfscp: fix free space calculation
- ntfscp: support compression
- ntfsresize: implemented expanding runlists
- ntfsresize: updated the description of the -f option
- ntfsresize: expand an NTFS volume downwards
- ntfsclone: backup bootsector not be to accounted for
- ntfsclone: creating/restoring a metadata image
- ntfsundelete: try to recover the file name when undeleting
- ntfsundelete: use inode number to name unnamed files
- ntfswipe: Big endian and other fixes
- secaudit: prefixed owner and group SID in ACL display
- library: fixed big cluster support using 4kB sector disk
- library: fixed huge data writes
- library: use transparent compression by default
- library: fixed several bad returns in error conditions
- library: enabled getting the sector size on FreeBSD and MacOSX
- build: fixed “make libs” to only build libraries
Source code(zip)
-
v2011_10_9_RC(Aug 31, 2021)
TEST Version 2011.10.9-RC (October 9, 2011) Download: https://tuxera.com/opensource/obsolete/ntfs-3g_ntfsprogs-2011.10.9-RC.tgz
Changelog:
- ntfs-3g: fixed device path canonicalization for use by devmapper
- ntfs-3g: fixed setting DOS names when defined with lower-case chars
- ntfs-3g: fixed attribute flags controlling recursive writes
- ntfs-3g: fixed compilation on OpenIndiana
- ntfs-3g: fixed options parsing on OSes with no extended attributes
- ntfs-3g: fixed relatime as a default mount option
- ntfs-3g: fixed endless recursion when MFT extents are described by themselves
- ntfs-3g: fixed the description of inherit option
- ntfs-3g: fixed overwriting a truncated file
- ntfs-3g: fixed truncation of DOS file names (12 ntfschars, not 12 utf8 chars)
- ntfs-3g: fixed the setting of attributes by secaudit (index not synced)
- ntfs-3g: faster compression
- ntfs-3g: new option delay_mtime to delay updates of mtime+ctime
- ntfsfix: new option to clear the list of bad sectors
- ntfsfix: fixed compilation on Sparc
- ntfsfix: fixed a bug causing a segmentation violation
- ntfsfix: repair self-located MFT data bug
- ntfsresize: implemented expanding runlists
- ntfsresize: updated the description of the -f option
- ntfsresize: expand an NTFS volume downwards
- ntfsclone: backup bootsector not be to accounted for
- ntfsclone: creating/restoring a metadata image
- ntfsundelete: try to recover the file name when undeleting
- ntfsundelete: use inode number to name unnamed files
- library: fixed several bad returns in error conditions
- library: enabled getting the sector size on FreeBSD and MacOSX
- build: fixed “make libs” to only build libraries
Source code(zip)
-
v2011_4_12(Aug 31, 2021)
Stable Version 2011.4.12 (April 10, 2011) Download: https://tuxera.com/opensource/obsolete/ntfs-3g_ntfsprogs-2011.4.12.tgz
Changelog:
- ntfs-3g: fixed possible wrong hole size when overwriting compressed data.
- ntfs-3g: fixed listxattr() to environments with extended attributes.
- ntfs-3g: fixed ENOSPC when making an index non-resident.
- ntfs-3g: fixed partial mapping ahead of mapped runlist.
- ntfs-3g: enabled forensic mounting (currently same as read-only).
- ntfs-3g: expand an attribute without creating a hole.
- ntfs-3g: improved appending data to a long hole.
- ntfs-3g: deny direct modifications to metadata files.
- ntfs-3g: option ‘acl’ to request the use of Posix ACLs.
- ntfsclone: fixed reading old big-endian ntfsclone images.
- ntfsclone: avoided writing beyond allocated variable.
- ntfsclone: close volume and cleanup when exiting.
- ntfsclone: new option not to clear the timestamps.
- ntfsclone: sync created image before remounting.
- ntfsclone: use a stream to produce aligned writes during image creation.
- ntfsinfo: display times in UTC.
- mkntfs: don’t store full bitmap and logfile in memory.
- mkntfs: set a volume UUID if option -U.
- mkntfs: fixed $MFT allocated size.
- mkntfs: fixed allocated size of resident unnamed data.
- ntfsfix: new option -n for no action.
- ntfsfix: try alternate boot sector if cannot start up.
- ntfsfix: check and fix the upcase table.
- ntfsfix: try to fix file systems with incorrect size.
- ntfsundelete: fixed a segfault.
- ntfsresize: new option –info-mb-only.
- ntfsresize: new option –check.
Source code(zip)
-
v2011_3_28_RC(Aug 31, 2021)
TEST Version 2011.3.28-RC (March 27, 2011) Download: https://tuxera.com/opensource/obsolete/ntfs-3g_ntfsprogs-2011.3.28-RC.tgz
Changelog:
- ntfs-3g: fixed possible wrong hole size when overwriting compressed data.
- ntfs-3g: fixed listxattr() to environments with extended attributes.
- ntfs-3g: fixed ENOSPC when making an index non-resident.
- ntfs-3g: fixed partial mapping ahead of mapped runlist.
- ntfs-3g: enabled forensic mounting (currently same as read-only).
- ntfs-3g: expand an attribute without creating a hole.
- ntfs-3g: improved appending data to a long hole.
- ntfs-3g: deny direct modifications to metadata files.
- ntfs-3g: option ‘acl’ to request the use of Posix ACLs.
- ntfsclone: fixed reading old big-endian ntfsclone images.
- ntfsclone: avoided writing beyond allocated variable.
- ntfsclone: close volume and cleanup when exiting.
- ntfsclone: new option not to clear the timestamps.
- ntfsclone: sync created image before remounting.
- ntfsclone: use a stream to produce aligned writes during image creation.
- ntfsinfo: display times in UTC.
- mkntfs: don’t store full bitmap and logfile in memory.
- mkntfs: set a volume UUID if option -U.
- mkntfs: fixed $MFT allocated size.
- mkntfs: fixed allocated size of resident unnamed data.
- ntfsfix: new option -n for no action.
- ntfsfix: try alternate boot sector if cannot start up.
- ntfsfix: check and fix the upcase table.
- ntfsfix: try to fix file systems with incorrect size.
- ntfsundelete: fixed a segfault.
- ntfsresize: new option –info-mb-only.
- ntfsresize: new option –check.
Source code(zip)
-
N2011_1_15(Aug 31, 2021)
Stable Version 2011.1.15 (January 23, 2011) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2011.1.15.tgz
Changelog:
- New: implemented fsync() and fsyncdir().
- New: implemented the ‘sync’ mount option.
- New: sanity check upcase table.
- New: added a big-endian extended attribute name for attrib and times.
- New: added an extended attribute name for creation time.
- New: enable renaming of system extended attributes.
- Change: improved appending data to fragmented files.
- Change: improved rebuilding a runlist.
- Change: improved comparing filenames on big-endian CPUs.
- Fixed stat(2) for system files with no data.
- Fixed alignment on cached structures.
- Fixed Posix ACLs for big-endian CPUs.
- Fixed deleting files using ignore_case option.
- Fixed allocated size when an attribute update causes unnamed data to be expelled.
Source code(zip)
-
N2010_10_2(Aug 31, 2021)
Stable Version 2010.10.2 (October 3, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.10.2.tgz
Changelog:
- Fixed filename encoding when standard functions are not available.
- Fixed checking mounted device status on some non-Linux platforms.
- Fixed mounting with SELinux context.
- Fixed -n and –no-mtab mount option handling, needed by automount.
- Improved consistency checks of POSIX ACLs.
- NTFS-3G manual update.
Source code(zip)
-
N2010_8_8(Aug 31, 2021)
Stable Version 2010.8.8 (August 8, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.8.8.tgz
Changelog:
- New: Full, transparent, read-write compression support.
- New: Two new mount options: compression and nocompression (default).
- New: Introduced windows_names mount option to enforce only Windows names.
- Change: Re-enabled compression in root directory.
- Change: Reversed default for showing/hiding hidden files.
- Change: Redefined default user mapping.
- Change: Marked files whose name has a dot initial as “hidden” if option hide_dot_files is used.
- Change: Renamed option default_permissions to permissions.
- Fixed use of utimensat() with external fuse older than 2.8.
- Fixed a hang when reading a corrupt compressed file.
- Fixed a possible crash when creating a stream.
- Fixed all reported and found compressed write related bugs.
- Fixed partially overwriting sparse clusters on highly fragmented volumes.
- Fixed checking write errors in setxattr().
- Fixed processing end of partial runlist for compressed files.
- Fixed updating file compressed sizes.
- Fixed checking the device mount state.
- Fixed processing of options silent and no_def_opts.
- Fixed excessive cluster allocation within big holes.
- Fixed creating empty encrypted extended attributes.
- Fixed too permissive sanity check before compressing.
- Fixed error returns when writing compressed data.
- Fixed sanity checked when closing a compressed file.
- Fixed zeroing the end of an ex-hole cluster of compressed files.
- Improved sanity checks on security descriptors.
Source code(zip)
-
N2010_7_23_RC(Aug 31, 2021)
TEST Version 2010.7.23-RC (July 23, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.7.23-RC.tgz
Changelog:
- Fixed partially overwriting sparse clusters on highly fragmented volumes.
- Fixed checking write errors in setxattr().
- Fixed processing end of partial runlist for compressed files.
- Fixed updating file compressed sizes.
- Fixed checking the device mount state.
- Fixed processing of options silent and no_def_opts.
- Fixed excessive cluster allocation within big holes.
- Fixed creating empty encrypted extended attributes.
- Fixed too permissive sanity check before compressing.
- Fixed error returns when writing compressed data.
- Fixed sanity checked when closing a compressed file.
- Improved sanity checks on security descriptors.
Source code(zip)
-
N2010_6_31_RC(Aug 31, 2021)
TEST Version 2010.6.31-RC (June 30, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.6.31-RC.tgz
Changelog:
- New: Full, transparent, read-write compression support.
- New: Two new mount options: compression and nocompression (default).
- New: Introduced windows_names mount option to enforce only Windows names.
- Change: Re-enabled compression in root directory.
- Change: Reversed default for showing/hiding hidden files.
- Change: Redefined default user mapping.
- Change: Marked files whose name has a dot initial as “hidden” if option hide_dot_files is used.
- Change: Renamed option default_permissions to permissions.
- Fixed use of utimensat() with external fuse older than 2.8.
- Fixed a hang when reading a corrupt compressed file.
- Fixed a possible crash when creating a stream.
- Fixed all reported and found compressed write related bugs.
Source code(zip)
-
N2010_5_22(Aug 31, 2021)
Stable Version 2010.5.22 (May 31, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.5.22.tgz
Changelog:
- Fixed build to create missing usermap and secaudit.
Source code(zip)
-
N2010_5_16(Aug 31, 2021)
Stable Version 2010.5.16 (May 16, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.5.16.tgz
Changelog:
- Fixed a compilation issue with uClibc.
- Fixed modifying the read-only flag on a directory.
- Fixed a bug in ACL inheritance.
- Fixed a bad condition for security descriptor upgrade.
- Fixed a possible index block with no key in $SII.
- Fixed the condition for executing utime() and utimensat().
- Fixed wrong flags when uid/gid are forced in mount options.
- Fixed a bad error checking when closing a compressed file.
- Fixed compiler warnings on OpenSolaris.
- Fixed conditional code for self-test in secaudit.
Source code(zip)
-
N2010_3_6(Aug 31, 2021)
Stable Version 2010.3.6 (March 7, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.3.6.tgz
Changelog:
- New: Support Object Identifiers which are used by Windows for shortcuts and caused CHKDSK warnings when the target was deleted.
- New: Nanosecond resolution file timestamps support.
- New: Selective file timestamp modification by utimensat(2).
- New: Make non-resident TXF_DATA attribute of root directory resident so Vista and later won’t complain about RAW partition.
- New: Caching inodes.
- New: More efficient UTF8/UTF16 translations.
- Fixed setting archive bit on file and alternated data stream creation.
- Fixed setting reparse tags in parent directories.
- Fixed enabling permissions when no UserMapping file is found.
- Fixed an error return code in the main mount function.
- Fixed setting timestamp via extended attributes to be consistent between Windows and Linux view.
- Fixed option processing when uid, gid, fmask or dmask are present.
Source code(zip)
-
N2010_2_6(Aug 31, 2021)
TEST Version 2010.2.6-RC (February 7, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.2.6-RC.tgz
Changelog:
- New: Support Object Identifiers which are used by Windows for shortcuts and caused CHKDSK warnings when the target was deleted.
- New: Nanosecond resolution file timestamps support.
- New: Selective file timestamp modification by utimensat(2).
- New: Make non-resident TXF_DATA attribute of root directory resident so Vista and later won’t complain about RAW partition.
- New: Caching inodes.
- New: More efficient UTF8/UTF16 translations.
- Fix: Setting timestamp via extended attributes was not consistent between Windows and Linux view.
Source code(zip)
-
N2010_1_16(Aug 31, 2021)
Stable Version 2010.1.16 (January 16, 2010) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2010.1.16.tgz
Changelog:
- Fix: Vista, Windows Server 2008 and Windows 7 couldn’t access a volume, file or directory if it had a non-resident TXF_DATA attribute despite being allowed by the NTFS $AttrDef attribute specification file. Solution is also available from Microsoft, please see KB974729. Upgrade is recommended!
- Fix: NTFS-3G may crashed if a junction point referred to a non-ASCII filename.
- Fix: Compilation errors on Mac OS X, OpenSolaris and openSUSE.
Source code(zip)
-
N2009_11_14(Aug 31, 2021)
Stable Version 2009.11.14 (November 15, 2009) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2009.11.14.tgz
Changelog:
- New: Full file ownership and permissions support. The ownership and permissions of files are interoperable with Windows and conforms to the POSIX rules.
- New: POSIX ACL support. The ACLs are an extension to ownership and permissions as defined in POSIX.
- New: Optional Windows-type inheritance of ACLs.
- New: Full extended attributes support for all namespaces: user, system, security and trusted.
- New: Junction points support. The junction points and symbolic links created by Windows are seen as symbolic links.
- New: Access is possible to NTFS internal data like Windows style archive bit and file attributes. They are mapped to extended attributes for easier access.
- New: Compression write support: sequential writing to compressed files is supported.
- New: Support copying and restoring encrypted files without decrypting them.
- New: Support getting and setting high-resolution file timestamps.
- New: Support to get, set and remove DOS filenames.
- New: Tools for managing ownership, permissions and ACLs: ntfs-3g.secaudit checks the integrity of ownership, permissions and ACL, ntfs-3g.usermap gives help to configure ownership.
- New: Implemented setchgtime() on Mac OS X.
- Fix: Improved Windows junction and symlink handling.
- Fix: Improved ACL handling.
- Fix: Unicode normalization on Mac OS X.
- Fix: Implemented true fsync() on Mac OS X
- Change: Performance optimizations. Frequently used data are cached to improve speed. Space allocation for fragmented and sparse files has been improved.
Source code(zip)
-
R2009_10_5_RC(Aug 31, 2021)
TEST Version 2009.10.5-RC (October 10, 2009) Download: https://tuxera.com/opensource/obsolete/ntfs-3g-2009.10.5-RC.tgz
Changelog:
- New: Full file ownership and permissions support. The ownership and permissions of files are interoperable with Windows and conforms to the POSIX rules.
- New: POSIX ACL support. The ACLs are an extension to ownership and permissions as defined in POSIX.
- New: Optional Windows-type inheritance of ACLs.
- New: Full extended attributes support for all namespaces: user, system, security and trusted.
- New: Junction points support. The junction points and symbolic links created by Windows are seen as symbolic links.
- New: Access is possible to NTFS internal data like Windows style archive bit and file attributes. They are mapped to extended attributes for easier access.
- New: Compression write support: sequential writing to compressed files is supported.
- New: Support copying and restoring encrypted files without decrypting them.
- New: Support getting and setting high-resolution file timestamps.
- New: Support to get, set and remove DOS filenames.
- New: Tools for managing ownership, permissions and ACLs: secaudit checks the integrity of ownership, permissions and ACL, usermap gives help to configure ownership.
- Change: Performance optimizations. Frequently used data are cached to improve speed. Space allocation for fragmented and sparse files has been improved.
Source code(zip)
RemixDB: A read- and write-optimized concurrent KV store. Fast point and range queries. Extremely low write-amplification.
REMIX and RemixDB The REMIX data structure was introduced in paper "REMIX: Efficient Range Query for LSM-trees", FAST'21. This repository maintains a
"SaferCPlusPlus" is essentially a collection of safe data types intended to facilitate memory and data race safe C++ programming
A collection of safe data types that are compatible with, and can substitute for, common unsafe native c++ types.
Haxe native extension to read and write windows clipboard.
Haxe Clipboard This is a native library to read and write clipboard data from Haxe. It uses Ammer to generate bindings. Note: This is a Windows only l
This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32
ESP32 nRF52 SWD flasher This software brings you the possibility to Read and Write the internal Flash of the Nordic nRF52 series with an ESP32 using t
This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip.
Pico SPI Utilities This is a set of utilities that allow you to read, write or erase SPI flash chips using a Raspberry Pi Pico (RP2040) chip. While th
Android PoC to read/write Huawei's NVME image
hisi-nve Android PoC to read/write Huawei's NVME image Disclaimers Use this tool at your own risk and always backup NVME. This tool was made for educa
Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.
CosMapper Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed /
DLL Exports Extraction BOF with optional NTFS transactions.
DLL Exports Extraction BOF What is this? This is a Cobalt Strike BOF file, meant to use two or three arguments (path to DLL, and/or a third argument [
x64 Windows kernel driver mapper, inject unsigned driver using anycall
anymapper x64 Windows kernel driver mapper, inject unsigned driver using anycall This project is WIP. Todo Fix: Can't make API calls from IAT nor func
Driver leap - Self-sustainable fork of SteamVR driver for Leap Motion controller with updated vendor libraries
Driver Leap Self-sustainable fork of SteamVR driver for Leap Motion controller with updated vendor libraries Installation (for users) Install Ultralea
Hygieia, a vulnerable driver traces scanner written in C++ as an x64 Windows kernel driver.
Hygieia The Greek goddess of health, her name is the source for the word "hygiene". Hygieia is a windows driver that works similarly to how pagewalkr
SinMapper - usermode driver mapper that forcefully loads any signed kernel driver
usermode driver mapper that forcefully loads any signed kernel driver (legit cert) with a big enough section (example: .data, .rdata) to map your driver over. the main focus of this project is to prevent modern anti-cheats (BattlEye, EAC) from finding your driver and having the power to hook anything due to being inside of legit memory (signed legit driver).
A simple thread-safe implementation of runtime obfuscation for Win32 applications.
Thread-Safe Win32 Runtime Obfuscation A simple thread-safe implementation of runtime obfuscation for Win32 applications. The main use case for this is
Online multi-agent trajectory planner using linear safe corridor (LSC)
lsc_planner This package presents an efficient multi-agent trajectory planning algorithm which generates safe trajectories in obstacle-dense environme
EntityX - A fast, type-safe C++ Entity-Component system
EntityX - A fast, type-safe C++ Entity Component System NOTE: The current stable release 1.0.0 breaks backward compatibility with < 1.0.0. See the cha
Type-safe Printf in C
Type-Safe Printf For C This uses macro magic, compound literals, and _Generic to take printf() to the next level: type-safe printing, printing into co
KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.
KeePassXC KeePassXC is a modern, secure, and open-source password manager that stores and manages your most sensitive information. You can run KeePass
Type safe - Zero overhead utilities for preventing bugs at compile time
type_safe type_safe provides zero overhead abstractions that use the C++ type system to prevent bugs. Zero overhead abstractions here and in following
Thread-safe cross-platform event loop library in C++
Dasynq Version 1.2.2 Dasynq is an event loop library similar to libevent, libev and libuv. Like other such libraries, it is crossplatform / portable.