linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jens Axboe <axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
To: Stefan Metzmacher <metze-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
Cc: io-uring <io-uring-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux API Mailing List
	<linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: IORING_REGISTER_CREDS[_UPDATE]() and credfd_create()?
Date: Tue, 28 Jan 2020 09:10:28 -0700	[thread overview]
Message-ID: <d6bc8139-abbe-8a8d-7da1-4eeafd9eebe7@kernel.dk> (raw)
In-Reply-To: <ea9f2f27-e9fe-7016-5d5f-56fe1fdfc7a9-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>

On 1/28/20 3:18 AM, Stefan Metzmacher wrote:
> Hi Jens,
> 
> now that we have IORING_FEAT_CUR_PERSONALITY...
> 
> How can we optimize the fileserver case now, in order to avoid the
> overhead of always calling 5 syscalls before io_uring_enter()?:
> 
>  /* gain root again */
>  setresuid(-1,0,-1); setresgid(-1,0,-1)
>  /* impersonate the user with groups */
>  setgroups(num, grps); setresgid(-1,gid,-1); setresuid(-1,uid,-1);
>  /* trigger the operation */
>  io_uring_enter();
> 
> I guess some kind of IORING_REGISTER_CREDS[_UPDATE] would be
> good, together with a IOSQE_FIXED_CREDS in order to specify
> credentials per operation.
> 
> Or we make it much more generic and introduce a credsfd_create()
> syscall in order to get an fd for a credential handle, maybe
> together with another syscall to activate the credentials of
> the current thread (or let a write to the fd trigger the activation
> in order to avoid an additional syscall number).
> 
> Having just an fd would allow IORING_REGISTER_CREDS[_UPDATE]
> to be just an array of int values instead of a more complex
> structure to define the credentials.

I'd rather avoid having to add more infrastructure for this, even if
credsfd_create() would be nifty.

With that in mind, something like:

- Application does IORING_REGISTER_CREDS, which returns some index
- Add a IORING_OP_USE_CREDS opcode, which sets the creds associated
  with dependent commands
- Actual request is linked to the IORING_OP_USE_CREDS command, any
  link off IORING_OP_USE_CREDS will use those credentials
- IORING_UNREGISTER_CREDS removes the registered creds

Just throwing that out there, definitely willing to entertain other
methods that make sense for this. Trying to avoid needing to put this
information in the SQE itself, hence the idea to use a chain of links
for it.

The downside is that we'll need to maintain an array of key -> creds,
but that's probably not a big deal.

What do you think? Ideally I'd like to get this done for 5.6 even if we
are a bit late, so you'll have everything you need with that release.

-- 
Jens Axboe

  parent reply	other threads:[~2020-01-28 16:10 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-28 10:18 IORING_REGISTER_CREDS[_UPDATE]() and credfd_create()? Stefan Metzmacher
     [not found] ` <ea9f2f27-e9fe-7016-5d5f-56fe1fdfc7a9-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-28 16:10   ` Jens Axboe [this message]
     [not found]     ` <d6bc8139-abbe-8a8d-7da1-4eeafd9eebe7-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 16:17       ` Stefan Metzmacher
     [not found]         ` <688e187a-75dd-89d9-921c-67de228605ce-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-28 16:19           ` Jens Axboe
     [not found]             ` <b29e972e-5ca0-8b5f-46b3-36f93d865723-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 17:19               ` Jens Axboe
     [not found]                 ` <1ac31828-e915-6180-cdb4-36685442ea75-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 18:04                   ` Jens Axboe
     [not found]                     ` <0d4f43d8-a0c4-920b-5b8f-127c1c5a3fad-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 19:42                       ` Jens Axboe
     [not found]                         ` <b88f0590-71c9-d2bd-9d17-027b05d30d7a-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 20:16                           ` Pavel Begunkov
     [not found]                             ` <15ca72fd-5750-db7c-2404-2dd4d53dd196-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-28 20:19                               ` Jens Axboe
     [not found]                                 ` <82b20ec2-ceaa-93f1-4cce-889a933f2c7a-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 20:50                                   ` Pavel Begunkov
     [not found]                                     ` <60253bd9-93a7-4d76-93b6-586e4f55138c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-28 20:56                                       ` Jens Axboe
     [not found]                                         ` <43a57f2a-16da-e657-3dca-5aa3afe31318-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 21:25                                           ` Christian Brauner
2020-01-28 22:38                                             ` Pavel Begunkov
2020-01-28 23:36                           ` Pavel Begunkov
     [not found]                             ` <2d7e7fa2-e725-8beb-90b9-6476d48bdb33-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-28 23:40                               ` Jens Axboe
     [not found]                                 ` <6c401e23-de7c-1fc1-4122-33d53fcf9700-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-28 23:51                                   ` Jens Axboe
     [not found]                                     ` <35eebae7-76dd-52ee-58b2-4f9e85caee40-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29  0:10                                       ` Pavel Begunkov
     [not found]                                         ` <d3f9c1a4-8b28-3cfe-de88-503837a143bc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-29  0:15                                           ` Jens Axboe
     [not found]                                             ` <6415ae98-e205-5374-296d-0442e1ed2034-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29  0:18                                               ` Jens Axboe
2020-01-29  0:20                                           ` Jens Axboe
     [not found]                                             ` <c9e58b5c-f66e-8406-16d5-fd6df1a27e77-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29  0:21                                               ` Pavel Begunkov
     [not found]                                                 ` <6e5ab6bf-6ff1-14df-1988-a80a7c6c9294-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-29  0:24                                                   ` Jens Axboe
     [not found]                                                     ` <2019e952-df2a-6b57-3571-73c525c5ba1a-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29  0:54                                                       ` Jens Axboe
     [not found]                                                         ` <0df4904f-780b-5d5f-8700-41df47a1b470-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29 10:17                                                           ` Pavel Begunkov
     [not found]                                                             ` <5406612e-299d-9d6e-96fc-c962eb93887f-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-29 13:11                                                               ` Stefan Metzmacher
     [not found]                                                                 ` <821243e7-b470-ad7a-c1a5-535bee58e76d-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-29 13:41                                                                   ` Pavel Begunkov
     [not found]                                                                     ` <9a419bc5-4445-318d-87aa-1474b49266dd-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-29 13:56                                                                       ` Stefan Metzmacher
     [not found]                                                                         ` <40d52623-5f9c-d804-cdeb-b7da6b13cb4f-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-29 14:23                                                                           ` Pavel Begunkov
     [not found]                                                                             ` <3e1289de-8d8e-49cf-cc9f-fb7bc67f35d5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-01-29 14:27                                                                               ` Stefan Metzmacher
     [not found]                                                                                 ` <6ebe1e2f-77f4-ae88-e184-c140a911cbd8-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-29 14:34                                                                                   ` Pavel Begunkov
2020-01-29 17:34                                                                               ` Jens Axboe
     [not found]                                                                                 ` <9aef3b3b-7e71-f7f1-b366-2517b4d52719-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29 17:42                                                                                   ` Jens Axboe
     [not found]                                                                                     ` <b3382961-8288-ec09-9019-5248f87dd86c-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-29 20:09                                                                                       ` Stefan Metzmacher
     [not found]                                                                                         ` <2d20bbcf-c04a-a02d-2850-cc7cc5a439f7-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-29 20:48                                                                                           ` Jens Axboe
2020-01-29 17:46                                                                                   ` Pavel Begunkov
2020-01-29 14:59                           ` Jann Horn
     [not found]                             ` <CAG48ez17Ums4s=gjai-Lakr2tWf9bjmYYeNb5aGrwAD51ypZMA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-01-29 17:34                               ` Jens Axboe
     [not found]                                 ` <4f833fc5-b4c0-c304-c3c2-f63c050b90a2-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-30  1:08                                   ` Jens Axboe
     [not found]                                     ` <9ce2e571-ed84-211a-4e99-d830ecdaf0e2-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-30  2:20                                       ` Jens Axboe
     [not found]                                         ` <6372aa92-6b28-4a5f-ca6d-7741e1c8592e-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-30  3:18                                           ` Jens Axboe
2020-01-30  6:53                                       ` Stefan Metzmacher
2020-01-30 10:11                                       ` Jann Horn
     [not found]                                         ` <CAG48ez1qVCoOwcdA7YZcKObQ9frWNxCjHOp6RYeqd+q_n4KJJQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2020-01-30 10:26                                           ` Christian Brauner
2020-01-30 14:11                                             ` Jens Axboe
     [not found]                                               ` <cf801c52-7719-bb5c-c999-ab9aab0d4871-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2020-01-30 14:47                                                 ` Stefan Metzmacher
     [not found]                                                   ` <0b72d000-02be-9974-900f-d94af1cbc08a-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
2020-01-30 15:34                                                     ` Jens Axboe
2020-01-30 15:13                                                 ` Christian Brauner
2020-01-30 15:29                                                   ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d6bc8139-abbe-8a8d-7da1-4eeafd9eebe7@kernel.dk \
    --to=axboe-tswwg44o7x1aa/9udqfwiw@public.gmane.org \
    --cc=io-uring-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=metze-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).