aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/capability.h
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2011-11-14 19:24:06 -0500
committerEric W. Biederman <ebiederm@xmission.com>2012-04-07 20:02:46 -0400
commit1a48e2ac034d47ed843081c4523b63c46b46888b (patch)
treed3a32ac7ffc47b075a64701a2fd74e00bbccf84d /include/linux/capability.h
parent973c5914260d75292f71a4729753086b9e863d57 (diff)
userns: Replace the hard to write inode_userns with inode_capable.
This represents a change in strategy of how to handle user namespaces. Instead of tagging everything explicitly with a user namespace and bulking up all of the comparisons of uids and gids in the kernel, all uids and gids in use will have a mapping to a flat kuid and kgid spaces respectively. This allows much more of the existing logic to be preserved and in general allows for faster code. In this new and improved world we allow someone to utiliize capabilities over an inode if the inodes owner mapps into the capabilities holders user namespace and the user has capabilities in their user namespace. Which is simple and efficient. Moving the fs uid comparisons to be comparisons in a flat kuid space follows in later patches, something that is only significant if you are using user namespaces. Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'include/linux/capability.h')
-rw-r--r--include/linux/capability.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/capability.h b/include/linux/capability.h
index 12d52dedb229..a76eca907470 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -374,6 +374,7 @@ struct cpu_vfs_cap_data {
374 374
375#ifdef __KERNEL__ 375#ifdef __KERNEL__
376 376
377struct inode;
377struct dentry; 378struct dentry;
378struct user_namespace; 379struct user_namespace;
379 380
@@ -548,6 +549,7 @@ extern bool has_ns_capability_noaudit(struct task_struct *t,
548extern bool capable(int cap); 549extern bool capable(int cap);
549extern bool ns_capable(struct user_namespace *ns, int cap); 550extern bool ns_capable(struct user_namespace *ns, int cap);
550extern bool nsown_capable(int cap); 551extern bool nsown_capable(int cap);
552extern bool inode_capable(const struct inode *inode, int cap);
551 553
552/* audit system wants to get cap info from files as well */ 554/* audit system wants to get cap info from files as well */
553extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); 555extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps);