Hello guixers,
I just sent a couple of patches [0] adding a full Scheme implementation
of the bits of Shadow that read and write /etc/subuid and /etc/subgid,
and some logic to handle generic requests from users that don't care
about specific ranges but just want to have some subids .
The result is a simple Guix System service that allows users to setup
these files on they're system. I hope this can be sound foundation for
the rootless-podman-service-type that I plan to implement .
I'm pasting here an excerpt of the documentation.
The (gnu system shadow) module exposes the subids-service-type, its
configuration record subids-configuration and its extension record
subids-extension.
With subids-service-type, subuids and subgids ranges can be reserved for
users that desire so:
(use-modules (gnu system shadow) ;for 'subids-service-type'
(gnu system accounts)) ;for 'subid-range'
(operating-system
(services
(list
(simple-service 'alice-bob-subids
subids-service-type
(subids-extension
(subgids
(list
(subid-range (name "alice"))))
(subuids
(list
(subid-range (name "alice"))
(subid-range (name "bob")
(start 100700)))))))))
Users (definitely other services), usually, are supposed to extend the
service instead of adding subids directly to subids-configuration,
unless they want to change the default behavior for root. With default
settings the subids-service-type adds, if it's not already there, a
configuration for the root account to both /etc/subuid and /etc/subgid,
possibly starting at the minimum possible subid. Otherwise the root
subuids and subgids ranges are fitted wherever possible.
The above configuration will yield the following:
# cat /etc/subgid
root:100000:65536
alice:165536:65536
# cat /etc/subuid
root:100000:700
bob:100700:65536
alice:166236:65536
This is a request for comments both here and in issue#72337 so please
let me know what you think.
Thank you for your help,
giacomo
[0]: https://issues.guix.gnu.org/72337