
Storing permissions metadata in .NTFS-3G/
Hello,
there are times when ntfs is used despite its discordance with Unix systems, because of its portability (i.e. support in Windows).
The main problem with NTFS when storage isn't shared across many users is IMO executable bit. It's a PITA. Personally I use
metastore (which I had to fix to support traversing .git directories), but it's an overkill and I still cannot work directly on NTFS, so it's double overkill (but better than nothing).
fmask=133 is simply unacceptable.
Please consider adding an option (store_perms?) that would preallocate map (inode no -> perms) for all current and possible future inodes. This file would be big (12bit * DISK_SIZE/CLUSTER_SIZE, so typically ~= DISK_SIZE/2730) but it would make lives easier, perfectly repaying for less than 0.04% space loss. It could be called .NTFS-3G/FilePermsMapping and be allocated as continuous area of partition for better performance. Obviously by default executable bit wouldn't be set for any file that was already present in NTFS volume before turning on such option
It could be also simplified (store_exec?). You could store only executable bit (file would be 12 times smaller than the one for full perms) and just apply it for all (i.e. user, group, other, unless mask disallows particular combination) if it's present. It's not as flexible as above idea, but it would still greatly improve NTFS usability in Linux.
Regards,
Przemoc
P.S. I guess it could be work arounded by using some "transparent" filesystem that would handle appropriately permission getting/setting and everything else would be forwarded to the base filesystem. I've never programmed in fuse, but I guess this design should be possible. If you're aware of fuse limitations, please tell whether such proxy filesystem on-top-of normal filesystem is possible and if not, what is the closest solution that would allow implementing this idea?