Hi everyone, I am new here.
For a new post I will be extensive, sorry for that.
First, I am very impressed with the work done by the devs of iX-Systems, the platform of TrueNAS being ported to Linux is a very appealing to me.
And while I was looking at FreeNAS as a too difficult alternative to shift to this platform, because it was based on BSD, that arrival of SCALE is a benediction for curious people like me.
Congratulations to all of them!
However, after a day "tinkering" with the system, I realized there is a significant hurdle with apps management. Considering how this will be the most attractive feature of the platform in the coming years, I would like to share some thoughts here.
This is truly a bummer to not have a clear understanding of how apps and permissions are managed within the datasets.
It makes the whole experience of server management a hurdle.
I don't want to sound upset in any way. It should be something that is managed in the onset of the system, applications and so on.
I am new to the forum, but I have a experience in linux, so I can help clarify this.
So here are the observations I can relate.
Syncthing is using the user "apps" (UID and GID=568) to operate.
apps is not part of "builtin-users" group, that is a shame, I think they should, more on that later.
Files created and managed by syncthing are hence attributed to the apps user (UID=568) and to the apps group (GID=568).
When files are created by users, they have a GID of 1001, and since apps is lower than user's files (568<1001) user cannot access those files...
That must change. On related example, plex was not showing any files synced by syncthing, simply because they were synced by syncthing...
OK, let's move on.
So syncthing should have two levels of permissions:
To solve the issue this would be giving proper results.
I propose to have two types of datasets: one used for file storage, one used for apps.
The ix-system dataset automatically generated at the first install of a app is properly assigned to apps (GID=568) and the user has no reason to "tinker" there. So all datasets that are not generated by the system should have root:users rights (UID=0:GID=1001)
In files datasets, file management rights will be use, making a clear separation with use interaction files. So all datasets created by users should have (root=0:users=1001) right access. This is not the case.
On the system I set, the main dataset (ZFS "filesystem") has allocated apps as a group (GID=568), and that is not a problem, but also all datasets I created to host my files.
I personally think the main dataset should have GID of 100, because this is root stuff.
That would be a first step.
Then the apps/softs/containers would have to manage two types of rights level, software level (GUID=568) and user files (GUID=1001). That is very common for containerized apps.
There is also the possibility to use the builtin_user group. I think is would be an elegant way of dealing with this, since the apps management does not require the apps user (UID=568) to have any other rights on the user files management.
One very surprising behavior is related to the access management of /st* files by Syncthing. After modifying the access management and GUID parameters of the dataset tree, syncthing was unable to create a /.stfolder in a sub-folder despite being able to sync files in the rest of the tree... It shows that there are two right managements in place, but there are not entirely able to manage operation.
I shall stop here for a first post. And I am pretty sure there are some resources I missed in the documentation.
Please, comment this, say hi or just share your thoughts on this. I believe this is an important part of the user experience that is in question here.
Additional ressources:
www.linode.com
www.truenas.com
Cheers
For a new post I will be extensive, sorry for that.
First, I am very impressed with the work done by the devs of iX-Systems, the platform of TrueNAS being ported to Linux is a very appealing to me.
And while I was looking at FreeNAS as a too difficult alternative to shift to this platform, because it was based on BSD, that arrival of SCALE is a benediction for curious people like me.
Congratulations to all of them!
However, after a day "tinkering" with the system, I realized there is a significant hurdle with apps management. Considering how this will be the most attractive feature of the platform in the coming years, I would like to share some thoughts here.
This is truly a bummer to not have a clear understanding of how apps and permissions are managed within the datasets.
It makes the whole experience of server management a hurdle.
I don't want to sound upset in any way. It should be something that is managed in the onset of the system, applications and so on.
I am new to the forum, but I have a experience in linux, so I can help clarify this.
So here are the observations I can relate.
Syncthing is using the user "apps" (UID and GID=568) to operate.
apps is not part of "builtin-users" group, that is a shame, I think they should, more on that later.
Files created and managed by syncthing are hence attributed to the apps user (UID=568) and to the apps group (GID=568).
When files are created by users, they have a GID of 1001, and since apps is lower than user's files (568<1001) user cannot access those files...
That must change. On related example, plex was not showing any files synced by syncthing, simply because they were synced by syncthing...
OK, let's move on.
So syncthing should have two levels of permissions:
- app managements rights (GUID=568)
- file management rights (GUID=1001)
To solve the issue this would be giving proper results.
I propose to have two types of datasets: one used for file storage, one used for apps.
The ix-system dataset automatically generated at the first install of a app is properly assigned to apps (GID=568) and the user has no reason to "tinker" there. So all datasets that are not generated by the system should have root:users rights (UID=0:GID=1001)
In files datasets, file management rights will be use, making a clear separation with use interaction files. So all datasets created by users should have (root=0:users=1001) right access. This is not the case.
On the system I set, the main dataset (ZFS "filesystem") has allocated apps as a group (GID=568), and that is not a problem, but also all datasets I created to host my files.
I personally think the main dataset should have GID of 100, because this is root stuff.
That would be a first step.
Then the apps/softs/containers would have to manage two types of rights level, software level (GUID=568) and user files (GUID=1001). That is very common for containerized apps.
There is also the possibility to use the builtin_user group. I think is would be an elegant way of dealing with this, since the apps management does not require the apps user (UID=568) to have any other rights on the user files management.
One very surprising behavior is related to the access management of /st* files by Syncthing. After modifying the access management and GUID parameters of the dataset tree, syncthing was unable to create a /.stfolder in a sub-folder despite being able to sync files in the rest of the tree... It shows that there are two right managements in place, but there are not entirely able to manage operation.
I shall stop here for a first post. And I am pretty sure there are some resources I missed in the documentation.
Please, comment this, say hi or just share your thoughts on this. I believe this is an important part of the user experience that is in question here.
Additional ressources:

Linux Users and Groups
Want to learn more about Linux users and groups? This guide covers the most common user and group management tasks.

Multi-protocol (NFSv3/SMB) shares - getting the permissions right
I have some datasets that I want to share via NFS to a LAB Kubernetes Pi cluster. I have made the dataset available by NFS and by playing around with perms and NFS mappings I have the dataset 'downloads' available to two deployments and can read and write files - its a bit clunky and I am sure...
