Hi All, I’m a relatively new truenas user looking for some guidance and potential reading material.
I recently setup Syncthing to keep a subset of files synced across my Truenas Scale machine and a few different machines running Arch, Ubuntu, Windows 10, and Android.
Truenas System specs
TrueNAS-SCALE-24.10.2
MOBO: X10SDV-4C-7TP4F
CPU: Xeon D-1518@2.20GHz
RAM: 32GB@1333MHz DDR4 ECC
PSU: Corsair RM650
Case: Fractal Node 804
Data Pool: 5 x 4 TB RAIDZ2
Backup Pool: 5 x 4 TB RAIDZ2
As a part of that process I ran into an issue when setting some of the advanced folder sharing properties for a test folder. Note that while this question arose due to using Syncthing, I’m asking it here as the question mainly revolves around setting permissions when syncing files from truenas to several machines using a variety of operating systems, and I want to ensure the way I’m doing this doesn’t muddle up the data I’m storing with truenas.
Brief Version
Since each machine has a different OS (Truenas, Arch, Ubuntu, Windows10, Android) and file systems (ZFS, BTRFS, ext4, NTFS, ext4?) I have disabled synchronizing file ownership and extended attributes. However I’m unsure whether or not I should ignore the file permissions on each machine. More generally, I’m also unsure if regardless of the permissions decision there are any risks to sharing some of my files using syncthing like this.
Longer version with details:
I’ll apologize in advance if this is a bit long. I tried several things to get my setup to work, and I’m hoping this can help a future user avoid a few headaches.
The host truenas scale machine is running ElectricEel-24.10.2 with Syncthing (App Version: 1.29.2, Version: 1.1.12). I additionally have Syncthing installed on 1) an Arch laptop using BTRFS, 2) an Ubuntu desktop using ext4, 3) a windows 10 desktop using NTFS, and 4) a Pixel 7 which I believe uses ext4.
When sharing a folder each machine can select a few options regarding file permissions. You can ‘Sync Ownership’, ‘Sync Extended Attributes’, and ‘Ignore Permissions’. During my initial tests I naively assumed I’d want to sync ownership and extended attributes. Of course this was horribly wrong, and led to logged errors like:
2025-02-28T09:42:32.94582017-05:00:
Puller (folder "TEST" (ID) item "carroll2019 - Spacetime and geometry an introduction to general relativity.pdf"): syncing: finishing: setting metadata: set xattrs /home/USER/TEST/.syncthing.carroll2019 - Spacetime and geometry an introduction to general relativity.pdf.tmp: Setxattr "system.nfs4_acl_xdr": operation not supported
2025-02-28 14:42:29 Puller (folder "TEST" (ID), item "locate"): syncing: handling dir (setting permissions): chmod /TEST/locate: operation not permitted
In hindsight this makes sense since I’m using multiple different file systems (as I learned after a good session of RTFM’ing sncXattr, syncOwnership).
I now have Sync Ownership and Sync Extended Attributes turned off on all machines. The final option I need to set is to decide whether or not to Ignore Permissions. The Syncthing GUI says that this is “useful on systems with nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android)”
When setting up the test folder on my Pixel it ignores permissions by default. For my other computers I’m unsure if I should ignore the permissions or not. The files appear to sync regardless of which option I select.
So, can someone either point me in the direction of some good reading material, or enlighten me on whether or not I should enable or disable ‘Ignore Permissions’. Does the decision change on each device? Also, are the previous choices to not sync file ownership or extended attributes OK, or am I accidentally shooting myself in the foot, and instead need to restrict sharing between users on different file systems?
Thanks for your guidance.