Andres Freund <andres@xxxxxxxxxxx> writes: > Hi, > > Sorry for the delayed response, EINBOXOVERFLOW. > > On 2023-07-26 16:02:26 -0400, Jeff Moyer wrote: >> Andres Freund <andres@xxxxxxxxxxx> writes: >> >> > Hi, >> > >> > On 2023-06-30 15:10:03 +0000, Matteo Rizzo wrote: >> >> Introduce a new sysctl (io_uring_disabled) which can be either 0, 1, >> >> or 2. When 0 (the default), all processes are allowed to create io_uring >> >> instances, which is the current behavior. When 1, all calls to >> >> io_uring_setup fail with -EPERM unless the calling process has >> >> CAP_SYS_ADMIN. When 2, calls to io_uring_setup fail with -EPERM >> >> regardless of privilege. >> > >> > Hm, is there a chance that instead of requiring CAP_SYS_ADMIN, a certain group >> > could be required (similar to hugetlb_shm_group)? Requiring CAP_SYS_ADMIN >> > could have the unintended consequence of io_uring requiring tasks being run >> > with more privileges than needed... Or some other more granular way of >> > granting the right to use io_uring? >> >> That's fine with me, so long as there is still an option to completely >> disable io_uring. > > Makes sense. > > >> > ISTM that it'd be nice if e.g. a systemd service specification could allow >> > some services to use io_uring, without allowing it for everyone, or requiring >> > to run services effectively as root. >> >> Do you have a proposal for how that would work? > > I think group based permissions would allow for it, even if perhaps not in the > most beautiful manner. Systemd can configure additional groups for a service > with SupplementaryGroups, so adding a "io_uring" group or such should > work. This is more complex/requires more configuration than just blocking root/non-root. Also, might not be practical for non-systemd systems, I suspect. Can we keep the other options in the sysctl io_uring_disabled as well: 0 -> all allowed (default) 1 -> group based permission 2 -> root only 3 -> all blocked -- Gabriel Krisman Bertazi