[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH-V6 04/10] virtio-9p: Security model for chown
From: |
Venkateswararao Jujjuri (JV) |
Subject: |
[Qemu-devel] [PATCH-V6 04/10] virtio-9p: Security model for chown |
Date: |
Thu, 10 Jun 2010 13:32:53 -0700 |
mapped model changes the owner in the extended attributes.
passthrough model does the change through lchown() as the
server don't need to follow the link and client will send the
actual filesystem object.
Signed-off-by: Venkateswararao Jujjuri <address@hidden>
---
hw/file-op-9p.h | 2 +-
hw/virtio-9p-local.c | 9 +++++++--
hw/virtio-9p.c | 9 +++++++--
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/hw/file-op-9p.h b/hw/file-op-9p.h
index 1c8d89b..a53cd35 100644
--- a/hw/file-op-9p.h
+++ b/hw/file-op-9p.h
@@ -50,7 +50,7 @@ typedef struct FileOperations
int (*lstat)(FsContext *, const char *, struct stat *);
ssize_t (*readlink)(FsContext *, const char *, char *, size_t);
int (*chmod)(FsContext *, const char *, FsCred *);
- int (*chown)(FsContext *, const char *, uid_t, gid_t);
+ int (*chown)(FsContext *, const char *, FsCred *);
int (*mknod)(FsContext *, const char *, mode_t, dev_t);
int (*mksock)(FsContext *, const char *);
int (*utime)(FsContext *, const char *, const struct utimbuf *);
diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
index 9bdcf02..1d7cb32 100644
--- a/hw/virtio-9p-local.c
+++ b/hw/virtio-9p-local.c
@@ -240,9 +240,14 @@ static int local_rename(FsContext *ctx, const char
*oldpath,
}
-static int local_chown(FsContext *ctx, const char *path, uid_t uid, gid_t gid)
+static int local_chown(FsContext *fs_ctx, const char *path, FsCred *credp)
{
- return chown(rpath(ctx, path), uid, gid);
+ if (fs_ctx->fs_sm == SM_MAPPED) {
+ return local_set_xattr(rpath(fs_ctx, path), credp);
+ } else if (fs_ctx->fs_sm == SM_PASSTHROUGH) {
+ return lchown(rpath(fs_ctx, path), credp->fc_uid, credp->fc_gid);
+ }
+ return -1;
}
static int local_utime(FsContext *ctx, const char *path,
diff --git a/hw/virtio-9p.c b/hw/virtio-9p.c
index 24291f4..fa459c9 100644
--- a/hw/virtio-9p.c
+++ b/hw/virtio-9p.c
@@ -209,7 +209,12 @@ static int v9fs_do_rename(V9fsState *s, V9fsString
*oldpath,
static int v9fs_do_chown(V9fsState *s, V9fsString *path, uid_t uid, gid_t gid)
{
- return s->ops->chown(&s->ctx, path->data, uid, gid);
+ FsCred cred;
+ cred_init(&cred);
+ cred.fc_uid = uid;
+ cred.fc_gid = gid;
+
+ return s->ops->chown(&s->ctx, path->data, &cred);
}
static int v9fs_do_utime(V9fsState *s, V9fsString *path,
@@ -2014,7 +2019,7 @@ static void v9fs_wstat_post_utime(V9fsState *s,
V9fsWstatState *vs, int err)
goto out;
}
- if (vs->v9stat.n_gid != -1) {
+ if (vs->v9stat.n_gid != -1 || vs->v9stat.n_uid != -1) {
if (v9fs_do_chown(s, &vs->fidp->path, vs->v9stat.n_uid,
vs->v9stat.n_gid)) {
err = -errno;
--
1.6.5.2
- [Qemu-devel] PATCH-V6 0/10] virtio-9p:Introducing security model for VirtFS, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 04/10] virtio-9p: Security model for chown,
Venkateswararao Jujjuri (JV) <=
- [Qemu-devel] [PATCH-V6 02/10] virtio-9p: Make infrastructure for the new security model., Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 10/10] virtio-9p: Implement Security model for mksock using mknod., Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 06/10] virtio-9p: Security model for create/open2, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 03/10] virtio-9p: Security model for chmod, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 08/10] virtio-9p: Security model for symlink and readlink, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 01/10] virtio-9p: Introduces an option to specify the security model., Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 05/10] virtio-9p: Implemented Security model for lstat and fstat, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 07/10] virtio-9p: Security model for mkdir, Venkateswararao Jujjuri (JV), 2010/06/10
- [Qemu-devel] [PATCH-V6 09/10] virtio-9p: Implement Security model for mknod, Venkateswararao Jujjuri (JV), 2010/06/10