From 1ba832ec8331806ba5a8cc3ac5caa85b27b21026 Mon Sep 17 00:00:00 2001 From: fanyong Date: Fri, 17 Nov 2006 03:14:29 +0000 Subject: [PATCH] For change file time operation (utime), file owner and CAP_FOWNER privilege are preferential. --- lustre/mdd/mdd_object.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index e1f9195..33806b3 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -601,9 +601,13 @@ static int mdd_fix_attr(const struct lu_env *env, struct mdd_object *obj, /* Check for setting the obj time. */ if ((la->la_valid & (LA_MTIME | LA_ATIME | LA_CTIME)) && !(la->la_valid & ~(LA_MTIME | LA_ATIME | LA_CTIME))) { - rc = mdd_permission_internal_locked(env, obj, tmp_la, MAY_WRITE); - if (rc) - RETURN(rc); + if ((uc->mu_fsuid != tmp_la->la_uid) && + !mdd_capable(uc, CAP_FOWNER)) { + rc = mdd_permission_internal_locked(env, obj, tmp_la, + MAY_WRITE); + if (rc) + RETURN(rc); + } } /* Make sure a caller can chmod. */ -- 1.8.3.1