1. 07 1月, 2009 1 次提交
  2. 25 11月, 2008 1 次提交
    • S
      User namespaces: set of cleanups (v2) · 18b6e041
      Serge Hallyn 提交于
      The user_ns is moved from nsproxy to user_struct, so that a struct
      cred by itself is sufficient to determine access (which it otherwise
      would not be).  Corresponding ecryptfs fixes (by David Howells) are
      here as well.
      
      Fix refcounting.  The following rules now apply:
              1. The task pins the user struct.
              2. The user struct pins its user namespace.
              3. The user namespace pins the struct user which created it.
      
      User namespaces are cloned during copy_creds().  Unsharing a new user_ns
      is no longer possible.  (We could re-add that, but it'll cause code
      duplication and doesn't seem useful if PAM doesn't need to clone user
      namespaces).
      
      When a user namespace is created, its first user (uid 0) gets empty
      keyrings and a clean group_info.
      
      This incorporates a previous patch by David Howells.  Here
      is his original patch description:
      
      >I suggest adding the attached incremental patch.  It makes the following
      >changes:
      >
      > (1) Provides a current_user_ns() macro to wrap accesses to current's user
      >     namespace.
      >
      > (2) Fixes eCryptFS.
      >
      > (3) Renames create_new_userns() to create_user_ns() to be more consistent
      >     with the other associated functions and because the 'new' in the name is
      >     superfluous.
      >
      > (4) Moves the argument and permission checks made for CLONE_NEWUSER to the
      >     beginning of do_fork() so that they're done prior to making any attempts
      >     at allocation.
      >
      > (5) Calls create_user_ns() after prepare_creds(), and gives it the new creds
      >     to fill in rather than have it return the new root user.  I don't imagine
      >     the new root user being used for anything other than filling in a cred
      >     struct.
      >
      >     This also permits me to get rid of a get_uid() and a free_uid(), as the
      >     reference the creds were holding on the old user_struct can just be
      >     transferred to the new namespace's creator pointer.
      >
      > (6) Makes create_user_ns() reset the UIDs and GIDs of the creds under
      >     preparation rather than doing it in copy_creds().
      >
      >David
      
      >Signed-off-by: David Howells <dhowells@redhat.com>
      
      Changelog:
      	Oct 20: integrate dhowells comments
      		1. leave thread_keyring alone
      		2. use current_user_ns() in set_user()
      Signed-off-by: NSerge Hallyn <serue@us.ibm.com>
      18b6e041
  3. 14 11月, 2008 1 次提交
  4. 25 7月, 2008 1 次提交
  5. 05 7月, 2008 1 次提交
  6. 22 5月, 2008 1 次提交
  7. 13 5月, 2008 1 次提交
  8. 29 4月, 2008 3 次提交
    • M
      eCryptfs: make key module subsystem respect namespaces · 6a3fd92e
      Michael Halcrow 提交于
      Make eCryptfs key module subsystem respect namespaces.
      
      Since I will be removing the netlink interface in a future patch, I just made
      changes to the netlink.c code so that it will not break the build.  With my
      recent patches, the kernel module currently defaults to the device handle
      interface rather than the netlink interface.
      
      [akpm@linux-foundation.org: export free_user_ns()]
      Signed-off-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Acked-by: NSerge Hallyn <serue@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6a3fd92e
    • M
      eCryptfs: integrate eCryptfs device handle into the module. · f66e883e
      Michael Halcrow 提交于
      Update the versioning information.  Make the message types generic.  Add an
      outgoing message queue to the daemon struct.  Make the functions to parse
      and write the packet lengths available to the rest of the module.  Add
      functions to create and destroy the daemon structs.  Clean up some of the
      comments and make the code a little more consistent with itself.
      
      [akpm@linux-foundation.org: printk fixes]
      Signed-off-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f66e883e
    • M
      eCryptfs: introduce device handle for userspace daemon communications · 8bf2debd
      Michael Halcrow 提交于
      A regular device file was my real preference from the get-go, but I went with
      netlink at the time because I thought it would be less complex for managing
      send queues (i.e., just do a unicast and move on).  It turns out that we do
      not really get that much complexity reduction with netlink, and netlink is
      more heavyweight than a device handle.
      
      In addition, the netlink interface to eCryptfs has been broken since 2.6.24.
      I am assuming this is a bug in how eCryptfs uses netlink, since the other
      in-kernel users of netlink do not seem to be having any problems.  I have had
      one report of a user successfully using eCryptfs with netlink on 2.6.24, but
      for my own systems, when starting the userspace daemon, the initial helo
      message sent to the eCryptfs kernel module results in an oops right off the
      bat.  I spent some time looking at it, but I have not yet found the cause.
      The netlink interface breaking gave me the motivation to just finish my patch
      to migrate to a regular device handle.  If I cannot find out soon why the
      netlink interface in eCryptfs broke, I am likely to just send a patch to
      disable it in 2.6.24 and 2.6.25.  I would like the device handle to be the
      preferred means of communicating with the userspace daemon from 2.6.26 on
      forward.
      
      This patch:
      
      Functions to facilitate reading and writing to the eCryptfs miscellaneous
      device handle.  This will replace the netlink interface as the preferred
      mechanism for communicating with the userspace eCryptfs daemon.
      
      Each user has his own daemon, which registers itself by opening the eCryptfs
      device handle.  Only one daemon per euid may be registered at any given time.
      The eCryptfs module sends a message to a daemon by adding its message to the
      daemon's outgoing message queue.  The daemon reads the device handle to get
      the oldest message off the queue.
      
      Incoming messages from the userspace daemon are immediately handled.  If the
      message is a response, then the corresponding process that is blocked waiting
      for the response is awakened.
      Signed-off-by: NMichael Halcrow <mhalcrow@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8bf2debd