Re: [PATCH 1/5] request_key.2: add information regarding default keyring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/19/2016 09:19 AM, David Howells wrote:
> Michael Kerrisk (man-pages) <mtk.manpages@xxxxxxxxx> wrote:
> 
>>        Otherwise,  if  dest_keyring is 0 and a new key is constructed, the new
>>        key will be linked to the "default" keyring.  More precisely, when  the
>>        kernel  tries  to  determine to which keyring the newly constructed key
>>        should be linked, it tries the following keyrings, beginning  with  the
>>        keyring  set  via  the  keyctl(2) KEYCTL_SET_REQKEY_KEYRING command and
>>        continuing in the order shown below until it finds  the  first  keyring
>>        that exists:
>>
>>        ·  The   requestor  keyring  (KEY_REQKEY_DEFL_REQUESTOR_KEYRING,  since
>>           Linux 2.6.29).
> 
> This is only available in the /sbin/request-key upcall, where it refers back
> to the destination keyring of whoever called request_key().

Eugene has sent a longer analysis, which I didn't yet scan thoroughly.
But, I feel like I must be missing something obvious. (And unfortunately, my
FIXME text was a bit garbled). Here, we're talking about the situation where
request_key(2) is called with a destination keyring argument (final argument 
to the call) that is 0. Does not KEY_REQKEY_DEFL_REQUESTOR_KEYRING then yield
"0" as its value, and thus this case is a no-op in the list of keyrings searched?.
(Is there something here that I'm missing to do with chained upcalls?)

>>        ·  The    session    keyring    for    the    process's     user     ID
>>           (KEY_REQKEY_DEFL_USER_SESSION_KEYRING).  This keyring is expected to
>>           always exist.
>>
>>           ┌─────────────────────────────────────────────────────┐
>>           │FIXME                                                │
>>           ├─────────────────────────────────────────────────────┤
>>           │Are there circumstances where  the  session  keyring │
>>           │does not exist?  What are they?                      │
>>           └─────────────────────────────────────────────────────┘
> 
> The session keyring does not exist in /sbin/init's process, for example,
> unless that process created one.  It's existence or non-existence is then
> inherited by all the processes that are started from that.  Upon a log-in, PAM
> is expected to create a session keyring.
> 
>>        ·  The   UID-specific   keyring  (KEY_REQKEY_DEFL_USER_KEYRING).   This
>>           keyring is also expected to always exist.
>>
>>           ┌─────────────────────────────────────────────────────┐
>>           │FIXME                                                │
>>           ├─────────────────────────────────────────────────────┤
>>           │Are  there  circumstances  where  the   UID-specific │
>>           │keyring does not exist?  What are they?              │
>>           └─────────────────────────────────────────────────────┘
> 
> The uid keyrings don't exist until someone tries to access them - at which
> point they're both created.  

Does "access" here mean attempt to "read ow update" the keyring, or are the
UID keyring created only on the first attempt to "update: them?

Cheers,

Michael

> When you log in, pam_keyinit creates a link to
> your user keyring in the session keyring it just created, thereby creating the
> user and user-session keyrings.
> 
> David
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux