login
Login
/
Register
Search
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2007
»
September
»
21
Re: [PATCH 00/22] Introduce credential record
view
thread
!MAILaRCHIVE_VOTE_RePLACE
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From:
Casey Schaufler <casey@...>
To: David Howells <dhowells@...>, <viro@...>, <hch@...>, <Trond.Myklebust@...>, <sds@...>, <casey@...>
Cc: <linux-kernel@...>, <selinux@...>, <linux-security-module@...>, <dhowells@...>
Subject:
Re: [PATCH 00/22] Introduce credential record
Date: Friday, September 21, 2007 - 11:36 am
--- David Howells <dhowells@redhat.com> wrote:
quoted text
> > > Hi Al, Christoph, Trond, Stephen, Casey, > > Here's a set of patches that implement a very basic set of COW credentials. > It > compiles, links and runs for x86_64 with EXT3, (V)FAT, NFS, AFS, SELinux and > keyrings all enabled. Most other filesystems are disabled, apart from things > like proc. It is not intended to completely cover the kernel at this point. > > The cred struct contains the credentials that the kernel needs to act upon > something or to create something. Credentials that govern how a task may be > acted upon remain in the task struct. > > In essence, the introduction of the cred struct separates a task's subjective > context (the authority with which it acts) from its objective context (the > authorisation required by others that want to act upon it), and permits > overriding of the subjective context by a kernel service so that the service > can act on the task's behalf to do something the task couldn't do on its own > authority. > > Because keyrings and effective capabilities can be installed or changed in > one > process by another process, they are shadowed by the cred structure rather > than > residing there. Additionally, the session and process keyrings are shared > between all the threads of a process. The shadowing is performed by > update_current_cred() which is invoked on entry to any system call that might > need it. > > A thread's cred struct may be read by that thread without any RCU precautions > as only that thread may replace the its own cred struct. To change a > thread's > credentials, dup_cred() should be called to create a new copy, the copy > should > be changed, and then set_current_cred() should be called to make it live. > Once > live, it may not be changed as it may then be shared with file descriptors, > RPC > calls and other threads. RCU will be used to dispose of the old structure. > > > The four patches are: > > (1) Introduce struct cred and migrate fsuid, fsgid, the groups list and the > keyrings pointer to it. > > (2) Introduce a security pointer into the cred struct and add LSM hooks to > duplicate the information pointed to thereby and to free it. > > Make SELinux implement the hooks, splitting out some the task security > data to be associated with struct cred instead. > > (3) Migrate the effective capabilities mask into the cred struct. > > (4) Provide a pair of LSM hooks so that a kernel service can (a) get a > credential record representing the authority with which it is permitted > to > act, and (b) alter the file creation context in a credential record. > > In addition, as this works with cachefiles, I've included all the FS-Cache, > CacheFiles, NFS and AFS patches. > > To substitute a temporary set of credentials, the cred struct attached to the > task should be altered, like so: > > int get_privileged_creds(...) > { > /* get special privileged creds */ > my_special_cred = get_kernel_cred("cachefiles", current); > change_create_files_as(my_special_cred, my_cache_dir); > } > > int do_stuff(...) > { > struct cred *cred; > > /* rotate in the new creds, saving the old */ > cred = __set_current_cred(get_cred(my_special_cred)); > > do_privileged_stuff(); > > /* restore the old creds */ > set_current_cred(cred); > } > > One thing I'm not certain about is how this should interact with /proc, which > can display some of the stuff in the cred struct. I think it may be > necessary > to have a real cred pointer and an effective cred pointer, with the contents > of > /proc coming from the real, but the effective governing what actually goes > on.
I think you want the effective values to show up in /proc. Casey Schaufler
casey@schaufler-ca.com
-
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH 00/22] Introduce credential record
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 08/22] FS-Cache: Generic filesystem caching facility
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 01/22] CRED: Introduce a COW credentials record
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 02/22] CRED: Split the task security data and move pa...
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 03/22] CRED: Move the effective capabilities into the...
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 05/22] FS-Cache: Release page->private after faile...
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 06/22] FS-Cache: Recruit a couple of page flags for c...
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 04/22] CRED: Request a credential record for a kernel...
, David Howells
, (Fri Sep 21, 10:47 am)
[PATCH 09/22] CacheFiles: Add missing copy_page export for i...
, David Howells
, (Fri Sep 21, 10:47 am)
Re: [PATCH 00/22] Introduce credential record
, David Howells
, (Fri Sep 21, 10:58 am)
[PATCH 07/22] FS-Cache: Provide an add_wait_queue_tail() fun...
, David Howells
, (Fri Sep 21, 10:47 am)
Re: [PATCH 00/22] Introduce credential record
, Casey Schaufler
, (Fri Sep 21, 11:36 am)
Re: [PATCH 00/22] Introduce credential record
, David Howells
, (Fri Sep 21, 11:40 am)
Re: [PATCH 00/22] Introduce credential record
, Casey Schaufler
, (Fri Sep 21, 12:04 pm)
Re: [PATCH 00/22] Introduce credential record
, David Howells
, (Fri Sep 21, 7:18 pm)
[PATCH 22/22] FS-Cache: Make kAFS use FS-Cache
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 21/22] AF_RXRPC: Save the operation ID for debugging
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 20/22] AFS: Implement shared-writable mmap
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 19/22] AFS: Improve handling of a rejected writeback
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 18/22] AFS: Add a function to excise a rejected write...
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 17/22] AFS: Add TestSetPageError()
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 16/22] NFS: Display local caching state
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 15/22] NFS: Configuration and mount option changes to...
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 14/22] NFS: Use local caching
, David Howells
, (Fri Sep 21, 10:48 am)
Re: [PATCH 14/22] NFS: Use local caching
, Peter Staubach
, (Fri Sep 21, 1:00 pm)
Re: [PATCH 14/22] NFS: Use local caching
, David Howells
, (Fri Sep 21, 7:22 pm)
Re: [PATCH 14/22] NFS: Use local caching
, David Howells
, (Fri Sep 21, 7:37 pm)
Re: [PATCH 14/22] NFS: Use local caching
, Peter Staubach
, (Mon Sep 24, 9:31 am)
[PATCH 13/22] CacheFiles: A cache that backs onto a mounted ...
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 12/22] CacheFiles: Export things for CacheFiles
, David Howells
, (Fri Sep 21, 10:48 am)
[PATCH 11/22] CacheFiles: Permit the page lock state to be m...
, David Howells
, (Fri Sep 21, 10:48 am)
Re: [PATCH 11/22] CacheFiles: Permit the page lock state to ...
, Trond Myklebust
, (Fri Sep 21, 3:33 pm)
Re: [PATCH 11/22] CacheFiles: Permit the page lock state to ...
, David Howells
, (Fri Sep 21, 7:14 pm)
[PATCH 10/22] CacheFiles: Add a hook to write a single page ...
, David Howells
, (Fri Sep 21, 10:47 am)
Re: [PATCH 10/22] CacheFiles: Add a hook to write a single p...
, Trond Myklebust
, (Fri Sep 21, 3:30 pm)
Re: [PATCH 10/22] CacheFiles: Add a hook to write a single p...
, David Howells
, (Fri Sep 21, 7:11 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Linus Torvalds
Linux 2.6.27-rc5
Greg Kroah-Hartman
[PATCH 007/196] Chinese: add translation of stable_kernel_rules.txt
Kamalesh Babulal
[Build Failure] 2.6.25-rc5-mm1 Build fails with allmodconfig probe_4drives undefined
Gabriel C
Re: Linus 2.6.23-rc1
openbsd-misc
:
linux-netdev
:
David Woodhouse
Re: [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin"
David Miller
Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().
David Miller
[GIT]: Networking
Gerrit Renker
[PATCH 0/37] dccp: Feature negotiation - last call for comments
git
:
Colocation donated by:
Who's online
There are currently
2 users
and
736 guests
online.
Online users
securitycamera
nybble
Syndicate