You need to sign in or sign up before continuing.
  1. 29 3月, 2011 1 次提交
  2. 24 3月, 2011 2 次提交
    • S
      userns: rename is_owner_or_cap to inode_owner_or_capable · 2e149670
      Serge E. Hallyn 提交于
      And give it a kernel-doc comment.
      
      [akpm@linux-foundation.org: btrfs changed in linux-next]
      Signed-off-by: NSerge E. Hallyn <serge.hallyn@canonical.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Daniel Lezcano <daniel.lezcano@free.fr>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Cc: James Morris <jmorris@namei.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2e149670
    • S
      userns: security: make capabilities relative to the user namespace · 3486740a
      Serge E. Hallyn 提交于
      - Introduce ns_capable to test for a capability in a non-default
        user namespace.
      - Teach cap_capable to handle capabilities in a non-default
        user namespace.
      
      The motivation is to get to the unprivileged creation of new
      namespaces.  It looks like this gets us 90% of the way there, with
      only potential uid confusion issues left.
      
      I still need to handle getting all caps after creation but otherwise I
      think I have a good starter patch that achieves all of your goals.
      
      Changelog:
      	11/05/2010: [serge] add apparmor
      	12/14/2010: [serge] fix capabilities to created user namespaces
      	Without this, if user serge creates a user_ns, he won't have
      	capabilities to the user_ns he created.  THis is because we
      	were first checking whether his effective caps had the caps
      	he needed and returning -EPERM if not, and THEN checking whether
      	he was the creator.  Reverse those checks.
      	12/16/2010: [serge] security_real_capable needs ns argument in !security case
      	01/11/2011: [serge] add task_ns_capable helper
      	01/11/2011: [serge] add nsown_capable() helper per Bastian Blank suggestion
      	02/16/2011: [serge] fix a logic bug: the root user is always creator of
      		    init_user_ns, but should not always have capabilities to
      		    it!  Fix the check in cap_capable().
      	02/21/2011: Add the required user_ns parameter to security_capable,
      		    fixing a compile failure.
      	02/23/2011: Convert some macros to functions as per akpm comments.  Some
      		    couldn't be converted because we can't easily forward-declare
      		    them (they are inline if !SECURITY, extern if SECURITY).  Add
      		    a current_user_ns function so we can use it in capability.h
      		    without #including cred.h.  Move all forward declarations
      		    together to the top of the #ifdef __KERNEL__ section, and use
      		    kernel-doc format.
      	02/23/2011: Per dhowells, clean up comment in cap_capable().
      	02/23/2011: Per akpm, remove unreachable 'return -EPERM' in cap_capable.
      
      (Original written and signed off by Eric;  latest, modified version
      acked by him)
      
      [akpm@linux-foundation.org: fix build]
      [akpm@linux-foundation.org: export current_user_ns() for ecryptfs]
      [serge.hallyn@canonical.com: remove unneeded extra argument in selinux's task_has_capability]
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NSerge E. Hallyn <serge.hallyn@canonical.com>
      Acked-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Acked-by: NDaniel Lezcano <daniel.lezcano@free.fr>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Cc: James Morris <jmorris@namei.org>
      Signed-off-by: NSerge E. Hallyn <serge.hallyn@canonical.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3486740a
  3. 13 3月, 2011 1 次提交
  4. 04 3月, 2011 5 次提交
  5. 26 2月, 2011 5 次提交
  6. 23 2月, 2011 1 次提交
  7. 08 2月, 2011 1 次提交
    • T
      CRED: Fix BUG() upon security_cred_alloc_blank() failure · 2edeaa34
      Tetsuo Handa 提交于
      In cred_alloc_blank() since 2.6.32, abort_creds(new) is called with
      new->security == NULL and new->magic == 0 when security_cred_alloc_blank()
      returns an error.  As a result, BUG() will be triggered if SELinux is enabled
      or CONFIG_DEBUG_CREDENTIALS=y.
      
      If CONFIG_DEBUG_CREDENTIALS=y, BUG() is called from __invalid_creds() because
      cred->magic == 0.  Failing that, BUG() is called from selinux_cred_free()
      because selinux_cred_free() is not expecting cred->security == NULL.  This does
      not affect smack_cred_free(), tomoyo_cred_free() or apparmor_cred_free().
      
      Fix these bugs by
      
      (1) Set new->magic before calling security_cred_alloc_blank().
      
      (2) Handle null cred->security in creds_are_invalid() and selinux_cred_free().
      Signed-off-by: NTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2edeaa34
  8. 02 2月, 2011 3 次提交
    • L
      security/selinux: fix /proc/sys/ labeling · 8e6c9693
      Lucian Adrian Grijincu 提交于
      This fixes an old (2007) selinux regression: filesystem labeling for
      /proc/sys returned
           -r--r--r-- unknown                          /proc/sys/fs/file-nr
      instead of
           -r--r--r-- system_u:object_r:sysctl_fs_t:s0 /proc/sys/fs/file-nr
      
      Events that lead to breaking of /proc/sys/ selinux labeling:
      
      1) sysctl was reimplemented to route all calls through /proc/sys/
      
          commit 77b14db5
          [PATCH] sysctl: reimplement the sysctl proc support
      
      2) proc_dir_entry was removed from ctl_table:
      
          commit 3fbfa981
          [PATCH] sysctl: remove the proc_dir_entry member for the sysctl tables
      
      3) selinux still walked the proc_dir_entry tree to apply
         labeling. Because ctl_tables don't have a proc_dir_entry, we did
         not label /proc/sys/ inodes any more. To achieve this the /proc/sys/
         inodes were marked private and private inodes were ignored by
         selinux.
      
          commit bbaca6c2
          [PATCH] selinux: enhance selinux to always ignore private inodes
      
          commit 86a71dbd
          [PATCH] sysctl: hide the sysctl proc inodes from selinux
      
      Access control checks have been done by means of a special sysctl hook
      that was called for read/write accesses to any /proc/sys/ entry.
      
      We don't have to do this because, instead of walking the
      proc_dir_entry tree we can walk the dentry tree (as done in this
      patch). With this patch:
      * we don't mark /proc/sys/ inodes as private
      * we don't need the sysclt security hook
      * we walk the dentry tree to find the path to the inode.
      
      We have to strip the PID in /proc/PID/ entries that have a
      proc_dir_entry because selinux does not know how to label paths like
      '/1/net/rpc/nfsd.fh' (and defaults to 'proc_t' labeling). Selinux does
      know of '/net/rpc/nfsd.fh' (and applies the 'sysctl_rpc_t' label).
      
      PID stripping from the path was done implicitly in the previous code
      because the proc_dir_entry tree had the root in '/net' in the example
      from above. The dentry tree has the root in '/1'.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NLucian Adrian Grijincu <lucian.grijincu@gmail.com>
      Signed-off-by: NEric Paris <eparis@redhat.com>
      8e6c9693
    • E
      SELinux: Use dentry name in new object labeling · 652bb9b0
      Eric Paris 提交于
      Currently SELinux has rules which label new objects according to 3 criteria.
      The label of the process creating the object, the label of the parent
      directory, and the type of object (reg, dir, char, block, etc.)  This patch
      adds a 4th criteria, the dentry name, thus we can distinguish between
      creating a file in an etc_t directory called shadow and one called motd.
      
      There is no file globbing, regex parsing, or anything mystical.  Either the
      policy exactly (strcmp) matches the dentry name of the object or it doesn't.
      This patch has no changes from today if policy does not implement the new
      rules.
      Signed-off-by: NEric Paris <eparis@redhat.com>
      652bb9b0
    • E
      fs/vfs/security: pass last path component to LSM on inode creation · 2a7dba39
      Eric Paris 提交于
      SELinux would like to implement a new labeling behavior of newly created
      inodes.  We currently label new inodes based on the parent and the creating
      process.  This new behavior would also take into account the name of the
      new object when deciding the new label.  This is not the (supposed) full path,
      just the last component of the path.
      
      This is very useful because creating /etc/shadow is different than creating
      /etc/passwd but the kernel hooks are unable to differentiate these
      operations.  We currently require that userspace realize it is doing some
      difficult operation like that and than userspace jumps through SELinux hoops
      to get things set up correctly.  This patch does not implement new
      behavior, that is obviously contained in a seperate SELinux patch, but it
      does pass the needed name down to the correct LSM hook.  If no such name
      exists it is fine to pass NULL.
      Signed-off-by: NEric Paris <eparis@redhat.com>
      2a7dba39
  9. 24 1月, 2011 2 次提交
  10. 11 1月, 2011 1 次提交
  11. 07 1月, 2011 3 次提交
    • N
      fs: dcache rationalise dget variants · dc0474be
      Nick Piggin 提交于
      dget_locked was a shortcut to avoid the lazy lru manipulation when we already
      held dcache_lock (lru manipulation was relatively cheap at that point).
      However, how that the lru lock is an innermost one, we never hold it at any
      caller, so the lock cost can now be avoided. We already have well working lazy
      dcache LRU, so it should be fine to defer LRU manipulations to scan time.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      dc0474be
    • N
      fs: dcache remove dcache_lock · b5c84bf6
      Nick Piggin 提交于
      dcache_lock no longer protects anything. remove it.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      b5c84bf6
    • N
      fs: dcache scale subdirs · 2fd6b7f5
      Nick Piggin 提交于
      Protect d_subdirs and d_child with d_lock, except in filesystems that aren't
      using dcache_lock for these anyway (eg. using i_mutex).
      
      Note: if we change the locking rule in future so that ->d_child protection is
      provided only with ->d_parent->d_lock, it may allow us to reduce some locking.
      But it would be an exception to an otherwise regular locking scheme, so we'd
      have to see some good results. Probably not worthwhile.
      Signed-off-by: NNick Piggin <npiggin@kernel.dk>
      2fd6b7f5
  12. 06 1月, 2011 1 次提交
  13. 17 12月, 2010 1 次提交
    • E
      SELinux: define permissions for DCB netlink messages · 350e4f31
      Eric Paris 提交于
      Commit 2f90b865 added two new netlink message types to the netlink route
      socket.  SELinux has hooks to define if netlink messages are allowed to
      be sent or received, but it did not know about these two new message
      types.  By default we allow such actions so noone likely noticed.  This
      patch adds the proper definitions and thus proper permissions
      enforcement.
      Signed-off-by: NEric Paris <eparis@redhat.com>
      350e4f31
  14. 08 12月, 2010 1 次提交
    • E
      selinux: cache sidtab_context_to_sid results · 73ff5fc0
      Eric Paris 提交于
      sidtab_context_to_sid takes up a large share of time when creating large
      numbers of new inodes (~30-40% in oprofile runs).  This patch implements a
      cache of 3 entries which is checked before we do a full context_to_sid lookup.
      On one system this showed over a x3 improvement in the number of inodes that
      could be created per second and around a 20% improvement on another system.
      
      Any time we look up the same context string sucessivly (imagine ls -lZ) we
      should hit this cache hot.  A cache miss should have a relatively minor affect
      on performance next to doing the full table search.
      
      All operations on the cache are done COMPLETELY lockless.  We know that all
      struct sidtab_node objects created will never be deleted until a new policy is
      loaded thus we never have to worry about a pointer being dereferenced.  Since
      we also know that pointer assignment is atomic we know that the cache will
      always have valid pointers.  Given this information we implement a FIFO cache
      in an array of 3 pointers.  Every result (whether a cache hit or table lookup)
      will be places in the 0 spot of the cache and the rest of the entries moved
      down one spot.  The 3rd entry will be lost.
      
      Races are possible and are even likely to happen.  Lets assume that 4 tasks
      are hitting sidtab_context_to_sid.  The first task checks against the first
      entry in the cache and it is a miss.  Now lets assume a second task updates
      the cache with a new entry.  This will push the first entry back to the second
      spot.  Now the first task might check against the second entry (which it
      already checked) and will miss again.  Now say some third task updates the
      cache and push the second entry to the third spot.  The first task my check
      the third entry (for the third time!) and again have a miss.  At which point
      it will just do a full table lookup.  No big deal!
      Signed-off-by: NEric Paris <eparis@redhat.com>
      73ff5fc0
  15. 03 12月, 2010 1 次提交
    • E
      SELinux: do not compute transition labels on mountpoint labeled filesystems · 415103f9
      Eric Paris 提交于
      selinux_inode_init_security computes transitions sids even for filesystems
      that use mount point labeling.  It shouldn't do that.  It should just use
      the mount point label always and no matter what.
      
      This causes 2 problems.  1) it makes file creation slower than it needs to be
      since we calculate the transition sid and 2) it allows files to be created
      with a different label than the mount point!
      
      # id -Z
      staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023
      # sesearch --type --class file --source sysadm_t --target tmp_t
      Found 1 semantic te rules:
         type_transition sysadm_t tmp_t : file user_tmp_t;
      
      # mount -o loop,context="system_u:object_r:tmp_t:s0"  /tmp/fs /mnt/tmp
      
      # ls -lZ /mnt/tmp
      drwx------. root root system_u:object_r:tmp_t:s0       lost+found
      # touch /mnt/tmp/file1
      # ls -lZ /mnt/tmp
      -rw-r--r--. root root staff_u:object_r:user_tmp_t:s0   file1
      drwx------. root root system_u:object_r:tmp_t:s0       lost+found
      
      Whoops, we have a mount point labeled filesystem tmp_t with a user_tmp_t
      labeled file!
      Signed-off-by: NEric Paris <eparis@redhat.com>
      Reviewed-by: NReviewed-by: James Morris <jmorris@namei.org>
      415103f9
  16. 01 12月, 2010 8 次提交
  17. 29 11月, 2010 1 次提交
    • S
      security: Define CAP_SYSLOG · ce6ada35
      Serge E. Hallyn 提交于
      Privileged syslog operations currently require CAP_SYS_ADMIN.  Split
      this off into a new CAP_SYSLOG privilege which we can sanely take away
      from a container through the capability bounding set.
      
      With this patch, an lxc container can be prevented from messing with
      the host's syslog (i.e. dmesg -c).
      
      Changelog: mar 12 2010: add selinux capability2:cap_syslog perm
      Changelog: nov 22 2010:
      	. port to new kernel
      	. add a WARN_ONCE if userspace isn't using CAP_SYSLOG
      Signed-off-by: NSerge Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: NAndrew G. Morgan <morgan@kernel.org>
      Acked-By: NKees Cook <kees.cook@canonical.com>
      Cc: James Morris <jmorris@namei.org>
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Cc: Stephen Smalley <sds@tycho.nsa.gov>
      Cc: "Christopher J. PeBenito" <cpebenito@tresys.com>
      Cc: Eric Paris <eparis@parisplace.org>
      Signed-off-by: NJames Morris <jmorris@namei.org>
      ce6ada35
  18. 24 11月, 2010 2 次提交