(LUSTRE_IMMUTABLE_FL | LUSTRE_APPEND_FL);
if ((uc->mu_fsuid != tmp_la->la_uid) &&
- !mdd_capable(uc, CAP_FOWNER))
+ !mdd_capable(uc, CFS_CAP_FOWNER))
RETURN(-EPERM);
/* XXX: the IMMUTABLE and APPEND_ONLY flags can
if (mdd_is_append(obj))
oldflags |= LUSTRE_APPEND_FL;
if ((oldflags ^ newflags) &&
- !mdd_capable(uc, CAP_LINUX_IMMUTABLE))
+ !mdd_capable(uc, CFS_CAP_LINUX_IMMUTABLE))
RETURN(-EPERM);
if (!S_ISDIR(tmp_la->la_mode))
if ((la->la_valid & (LA_MTIME | LA_ATIME | LA_CTIME)) &&
!(la->la_valid & ~(LA_MTIME | LA_ATIME | LA_CTIME))) {
if ((uc->mu_fsuid != tmp_la->la_uid) &&
- !mdd_capable(uc, CAP_FOWNER)) {
+ !mdd_capable(uc, CFS_CAP_FOWNER)) {
rc = mdd_permission_internal_locked(env, obj, tmp_la,
MAY_WRITE);
if (rc)
/* Bypass la_vaild == LA_MODE,
* this is for changing file with SUID or SGID. */
if ((la->la_valid & ~LA_MODE) &&
+ !(ma->ma_attr_flags & MDS_PERM_BYPASS) &&
(uc->mu_fsuid != tmp_la->la_uid) &&
- !mdd_capable(uc, CAP_FOWNER))
+ !mdd_capable(uc, CFS_CAP_FOWNER))
RETURN(-EPERM);
if (la->la_mode == (umode_t) -1)
(tmp_la->la_mode & ~S_IALLUGO);
/* Also check the setgid bit! */
- if (!lustre_in_group_p(uc, (la->la_valid & LA_GID) ? la->la_gid :
- tmp_la->la_gid) && !mdd_capable(uc, CAP_FSETID))
+ if (!lustre_in_group_p(uc, (la->la_valid & LA_GID) ?
+ la->la_gid : tmp_la->la_gid) &&
+ !mdd_capable(uc, CFS_CAP_FSETID))
la->la_mode &= ~S_ISGID;
} else {
la->la_mode = tmp_la->la_mode;
la->la_uid = tmp_la->la_uid;
if (((uc->mu_fsuid != tmp_la->la_uid) ||
(la->la_uid != tmp_la->la_uid)) &&
- !mdd_capable(uc, CAP_CHOWN))
+ !mdd_capable(uc, CFS_CAP_CHOWN))
RETURN(-EPERM);
/* If the user or group of a non-directory has been
if (((uc->mu_fsuid != tmp_la->la_uid) ||
((la->la_gid != tmp_la->la_gid) &&
!lustre_in_group_p(uc, la->la_gid))) &&
- !mdd_capable(uc, CAP_CHOWN))
+ !mdd_capable(uc, CFS_CAP_CHOWN))
RETURN(-EPERM);
/* Likewise, if the user or group of a non-directory
if (rc)
RETURN(rc);
- if ((uc->mu_fsuid != tmp_la->la_uid) && !mdd_capable(uc, CAP_FOWNER))
+ if ((uc->mu_fsuid != tmp_la->la_uid) &&
+ !mdd_capable(uc, CFS_CAP_FOWNER))
RETURN(-EPERM);
RETURN(rc);
if (uc && ((uc->mu_valid == UCRED_OLD) ||
(uc->mu_valid == UCRED_NEW)) &&
(uc->mu_fsuid != tmp_la->la_uid) &&
- !mdd_capable(uc, CAP_FOWNER))
+ !mdd_capable(uc, CFS_CAP_FOWNER))
RETURN(-EPERM);
}
#endif