Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1460013
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH v2 2/3] proc: make proc entries inherit ownership from parent |
| Date | Wed, 10 Aug 2016 23:40:02 +0200 |
| Message-ID | <s4Joe-2de-25@gated-at.bofh.it> (permalink) |
| References | <s4Joe-2de-5@gated-at.bofh.it> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=sFT2cZ7b5MAI8IVL5hzbC531qqAVA/6zC3Mtf5qDXEQ=; b=0LQOLWQCBo2dlxeqc3s+phdir/CVeYq1FQfhs5KRlRcrLn1C334WmDZs5aXPgDuN5H Kubji0bzDN33OndfKX2s9TMTwG4NZPkAS41JHneNzoBXSTHO2gyX4a6DWD1+rsvEwPNv iUE1FEPIEIGmRaOIUpwlt71gQQ/rD8pEN20A5NFEBEhCg9R3DEEj3UPRS+12KUV2v5Wj Bub63gRqs/RFlK5C+fpUML9H4nQP87xcWPAiFi0RzZPKH9GIGc0UMUKNV1xOYLHLlgEx xOk/9RgWo2WM0CGlpg8aa3eZan50kgSPFYR1/Cais56gIkxeKLm27+h1D9cff/vY1drB fgrA== |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sFT2cZ7b5MAI8IVL5hzbC531qqAVA/6zC3Mtf5qDXEQ=; b=FitxWZrWzure4wVydMRi6k8+GZXcioXamQhEieXAyHSSTpAkhtgaJJPKGhxZ6BFK1q CWJ7Bx9Qq1mX7He4O1VqSnZuQ65ELWW0XDijl4gp7F/dp88oHTbp/AljeFbXZFS0noyK ngdxcsWZEYfCoaTrfMGWsXYC/MfzXPT/kfyPr5ySOz656pk2017sa/hOmXKqmM1xyMWa x0p+UXmnPvxBtv1now3XiSQdH7CkFM5uddE9dGNkmWKm9h9zsDQK34VRl9R13+ihhGH4 +Bpvr6neXJL2MXEqVySvQarrkWcMt1ZAu2GOOpMk4JRyZIWSOZ1ySGjR85D8ZLj10VZh Strw== |
| X-Gm-Message-State | AEkoouvkZd7AVWiDJDzYN91D2WLj2F4h5lE7LTIJIeBqlYVUl/Kl2MLbVk59rH0A8UwjLA== |
| X-Received | by 10.66.159.131 with SMTP id xc3mr11087652pab.28.1470864966295; Wed, 10 Aug 2016 14:36:06 -0700 (PDT) |
| X-Mailer | git-send-email 2.8.0.rc3.226.g39d4020 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 66 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Al Viro <viro@zeniv.linux.org.uk>, linux-kernel@vger.kernel.org, netdev@vger.kernel.org |
| X-Original-Date | Wed, 10 Aug 2016 14:36:01 -0700 |
| X-Original-Message-ID | <1470864962-25056-3-git-send-email-dmitry.torokhov@gmail.com> |
| X-Original-References | <1470864962-25056-1-git-send-email-dmitry.torokhov@gmail.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1460013 |
Show key headers only | View raw
There are certain parameters that belong to net namespace and that are
exported in /proc. They should be controllable by the container's owner,
but are currently owned by global root and thus not available.
Let's change proc code to inherit ownership of parent entry, and when
create per-ns "net" proc entry set it up as owned by container's owner.
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
fs/proc/generic.c | 2 ++
fs/proc/proc_net.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
diff --git a/fs/proc/generic.c b/fs/proc/generic.c
index c633476..bca66d8 100644
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -390,6 +390,8 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent,
atomic_set(&ent->count, 1);
spin_lock_init(&ent->pde_unload_lock);
INIT_LIST_HEAD(&ent->pde_openers);
+ proc_set_user(ent, (*parent)->uid, (*parent)->gid);
+
out:
return ent;
}
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
index c8bbc68..7ae6b1d 100644
--- a/fs/proc/proc_net.c
+++ b/fs/proc/proc_net.c
@@ -21,6 +21,7 @@
#include <linux/bitops.h>
#include <linux/mount.h>
#include <linux/nsproxy.h>
+#include <linux/uidgid.h>
#include <net/net_namespace.h>
#include <linux/seq_file.h>
@@ -185,6 +186,8 @@ const struct file_operations proc_net_operations = {
static __net_init int proc_net_ns_init(struct net *net)
{
struct proc_dir_entry *netd, *net_statd;
+ kuid_t uid;
+ kgid_t gid;
int err;
err = -ENOMEM;
@@ -199,6 +202,16 @@ static __net_init int proc_net_ns_init(struct net *net)
netd->parent = &proc_root;
memcpy(netd->name, "net", 4);
+ uid = make_kuid(net->user_ns, 0);
+ if (!uid_valid(uid))
+ uid = netd->uid;
+
+ gid = make_kgid(net->user_ns, 0);
+ if (!gid_valid(gid))
+ gid = netd->gid;
+
+ proc_set_user(netd, uid, gid);
+
err = -EEXIST;
net_statd = proc_net_mkdir(net, "stat", netd);
if (!net_statd)
--
2.8.0.rc3.226.g39d4020
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v2 0/3] Make /proc per net namespace objects belong to container Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-08-10 23:40 +0200 [PATCH v2 2/3] proc: make proc entries inherit ownership from parent Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-08-10 23:40 +0200 Re: [PATCH v2 0/3] Make /proc per net namespace objects belong to container David Miller <davem@davemloft.net> - 2016-08-15 06:10 +0200
csiph-web