ntfs-3g Unsupported "Archive" reparse point
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
ntfs-3g (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
######## Description ########
I believe I've encountered a new type of reparse point that's unsupported by the current ntfs-3g library. I've tested this with a basic Windows 10 installation, and the reparse point seems to be on a Microsoft Edge executable file.
The current plugins (available at http://
1) System Compression
2) Deduplicated files
3) OneDrive
I attempted to invoke the "file" operation on a given Windows 10 file, entitled "MicrosoftEdge.
######## Expected Outcome ########
I expected to be able to read the file either in the form of a "symlink" or a normal file.
######## Actual Outcome ########
I encountered the dreaded "unsupported reparse point":
david@david-
Users/user/
Which I believe is a currently unsupported "Archive" reparse point, which I've determined by running "ntfsinfo" on the file. It identifies the File Attribute as an "Archive" reparse point:
david@david-
Dumping Inode 89554 (0x15dd2)
Upd. Seq. Array Off.: 48 (0x30)
Upd. Seq. Array Count: 3 (0x3)
Upd. Seq. Number: 4 (0x4)
LogFile Seq. Number: 0xf3122ff
MFT Record Seq. Numb.: 1 (0x1)
Number of Hard Links: 2 (0x2)
Attribute Offset: 56 (0x38)
MFT Record Flags: IN_USE
Bytes Used: 736 (0x2e0) bytes
Bytes Allocated: 1024 (0x400) bytes
Next Attribute Instance: 5 (0x5)
MFT Padding: 00 00
Dumping attribute $STANDARD_
Resident: Yes
Attribute flags: 0x0000
Attribute instance: 0 (0x0)
Data size: 72 (0x48)
Resident flags: 0x00
File Creation Time: Wed Jan 16 18:01:51 2019 UTC
File Altered Time: Wed Jan 16 18:01:51 2019 UTC
MFT Changed Time: Wed Jan 16 18:01:51 2019 UTC
Last Accessed Time: Wed Jan 16 18:01:51 2019 UTC
File attributes: ARCHIVE REPARSE_POINT (0x00000420)
Maximum versions: 0
Version number: 0
Class ID: 0
User ID: 0 (0x0)
Security ID: 1652 (0x674)
Quota charged: 0 (0x0)
Update Sequence Number: 5612560 (0x55a410)
Dumping attribute $FILE_NAME (0x30) from mft record 89554 (0x15dd2)
Resident: Yes
Attribute flags: 0x0000
Attribute instance: 3 (0x3)
Data size: 90 (0x5a)
Resident flags: 0x01
Parent directory: 89553 (0x15dd1)
File Creation Time: Wed Jan 16 18:01:51 2019 UTC
File Altered Time: Wed Jan 16 18:01:51 2019 UTC
MFT Changed Time: Wed Jan 16 18:01:51 2019 UTC
Last Accessed Time: Wed Jan 16 18:01:51 2019 UTC
Allocated Size: 0 (0x0)
Data Size: 0 (0x0)
Filename Length: 12 (0xc)
File attributes: ARCHIVE (0x00000020)
Namespace: DOS
Filename: 'MICROS~1.EXE'
Dumping attribute $FILE_NAME (0x30) from mft record 89554 (0x15dd2)
Resident: Yes
Attribute flags: 0x0000
Attribute instance: 2 (0x2)
Data size: 100 (0x64)
Resident flags: 0x01
Parent directory: 89553 (0x15dd1)
File Creation Time: Wed Jan 16 18:01:51 2019 UTC
File Altered Time: Wed Jan 16 18:01:51 2019 UTC
MFT Changed Time: Wed Jan 16 18:01:51 2019 UTC
Last Accessed Time: Wed Jan 16 18:01:51 2019 UTC
Allocated Size: 0 (0x0)
Data Size: 0 (0x0)
Filename Length: 17 (0x11)
File attributes: ARCHIVE (0x00000020)
Namespace: Win32
Filename: 'MicrosoftEdge.exe'
Dumping attribute $DATA (0x80) from mft record 89554 (0x15dd2)
Resident: Yes
Attribute flags: 0x0000
Attribute instance: 1 (0x1)
Data size: 0 (0x0)
Resident flags: 0x00
Dumping attribute $REPARSE_POINT (0xc0) from mft record 89554 (0x15dd2)
Resident: Yes
Attribute flags: 0x0000
Attribute instance: 4 (0x4)
Data size: 280 (0x118)
Resident flags: 0x00
Reparse tag: 0x8000001b
Data length: 272 (0x110)
Data: 0x030000004d006
End of inode reached
######## System/Environment Details ########
david@david-
Description: Ubuntu 18.04.1 LTS
Release: 18.04
david@david-
ntfs-3g:
Installed: 1:2017.3.23-2
Candidate: 1:2017.3.23-2
Version table:
*** 1:2017.3.23-2 500
500 http://
100 /var/lib/
The "getfattr" is:
david@david-
getfattr: Removing leading '/' from absolute path names
# file: mnt/windows_
system.
And my ntfs-3g configuration is as follows (per reporting standards at the bottom of http://
david@david-
ntfs-3g 2017.3.23 integrated FUSE 28 - Third Generation NTFS Driver
Configuration type 7, XATTRS are on, POSIX ACLS are on
david@david-
/bin/ntfs-3g: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/
david@david-
a917787eae50117
david@david-
drwxr-xr-x 2 root root 4096 Jan 21 16:11 /usr/lib/
david@david-
1d5331d5d6bf8a7
63a1ccbb2d16581
9db6f8288ed3856
Thank you for your detailed report.
> I encountered the dreaded "unsupported reparse point":
And this is caused by Microsoft designing new organizations of files to implement new features. These features are not documented and may be meaningless to a Linux user.
> File attributes: ARCHIVE REPARSE_POINT (0x00000420)
The archive flag is a traditional one, it means the file has been modified since it was last backup'ed.
> Reparse tag: 0x8000001b
The only thing I know about this tag is that it means "IO_REPARSE_ TAG_APPEXECLINK ". Your report shows this file has no data at all, so this must be some cloud file which has to be downloaded to be run.
The reparse data itself only shows the name of the file (Microsoft. MicrosoftEdge_ 8wekyb3d8bbweMi crosoft. MicrosoftEdge_ 8wekyb3d8bbwe! MicrosoftEdge) and the local launcher (C:\Windows\ System32\ SystemUWPLaunch er.exe) , so the cloud file must be at a location defined by your Microsoft account.
Accessing cloud storage is far beyond the ntfs-3g scope. Moreover running a Windows browser executable on Linux is likely to pose some challenges to usual emulators. The only thing I can reasonably do is to design a crude plugin which will return EREMOTE ("The object is remote") instead of an unsupported symlink.