// For directories, DACs are overridable.
// For files, Read/write DACs are always overridable but executable DACs are
// overridable when there is at least one exec bit set
- if(!S_ISDIR(in->mode) && (want & MAY_EXEC) && !(in->mode & S_IXUGO))
+ if(!S_ISDIR(in->mode) && (want & CLIENT_MAY_EXEC) && !(in->mode & S_IXUGO))
return -CEPHFS_EACCES;
return 0;
}
r = 0;
if (strncmp(name, "system.", 7) == 0) {
- if ((want & MAY_WRITE) && (perms.uid() != 0 && perms.uid() != in->uid))
+ if ((want & CLIENT_MAY_WRITE) && (perms.uid() != 0 && perms.uid() != in->uid))
r = -CEPHFS_EPERM;
} else {
r = inode_permission(in, perms, want);
goto out;
if (mask & CEPH_SETATTR_SIZE) {
- r = inode_permission(in, perms, MAY_WRITE);
+ r = inode_permission(in, perms, CLIENT_MAY_WRITE);
if (r < 0)
goto out;
}
if (check_mask & mask) {
goto out;
} else {
- r = inode_permission(in, perms, MAY_WRITE);
+ r = inode_permission(in, perms, CLIENT_MAY_WRITE);
if (r < 0)
goto out;
}
unsigned want = 0;
if ((flags & O_ACCMODE) == O_WRONLY)
- want = MAY_WRITE;
+ want = CLIENT_MAY_WRITE;
else if ((flags & O_ACCMODE) == O_RDWR)
- want = MAY_READ | MAY_WRITE;
+ want = CLIENT_MAY_READ | CLIENT_MAY_WRITE;
else if ((flags & O_ACCMODE) == O_RDONLY)
- want = MAY_READ;
+ want = CLIENT_MAY_READ;
if (flags & O_TRUNC)
- want |= MAY_WRITE;
+ want |= CLIENT_MAY_WRITE;
int r = 0;
switch (in->mode & S_IFMT) {
r = -CEPHFS_ELOOP;
goto out;
case S_IFDIR:
- if (want & MAY_WRITE) {
+ if (want & CLIENT_MAY_WRITE) {
r = -CEPHFS_EISDIR;
goto out;
}
if (r < 0)
goto out;
- r = inode_permission(dir, perms, MAY_EXEC);
+ r = inode_permission(dir, perms, CLIENT_MAY_EXEC);
out:
ldout(cct, 3) << __func__ << " " << dir << " = " << r << dendl;
return r;
if (r < 0)
goto out;
- r = inode_permission(dir, perms, MAY_EXEC | MAY_WRITE);
+ r = inode_permission(dir, perms, CLIENT_MAY_EXEC | CLIENT_MAY_WRITE);
out:
ldout(cct, 3) << __func__ << " " << dir << " = " << r << dendl;
return r;
if (r < 0)
goto out;
- r = inode_permission(dir, perms, MAY_EXEC | MAY_WRITE);
+ r = inode_permission(dir, perms, CLIENT_MAY_EXEC | CLIENT_MAY_WRITE);
if (r < 0)
goto out;
if ((in->mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP))
goto out;
- r = inode_permission(in, perms, MAY_READ | MAY_WRITE);
+ r = inode_permission(in, perms, CLIENT_MAY_READ | CLIENT_MAY_WRITE);
out:
ldout(cct, 3) << __func__ << " " << in << " = " << r << dendl;
return r;
auxsize = aux->size();
ldout(cct, 10) << __func__ << " mask " << mask << " issued " <<
- ccap_string(issued) << " aux size " << auxsize << dendl;
+ ccap_string(issued) << " aux size " << auxsize << " perms " << perms << dendl;
if (in->snapid != CEPH_NOSNAP) {
return -CEPHFS_EROFS;
const UserPerm& perms)
{
if (cct->_conf->client_permissions) {
- int r = xattr_permission(in.get(), name, MAY_READ, perms);
+ int r = xattr_permission(in.get(), name, CLIENT_MAY_READ, perms);
if (r < 0)
return r;
}
std::scoped_lock lock(client_lock);
if (!fuse_default_permissions) {
- int r = xattr_permission(in, name, MAY_READ, perms);
+ int r = xattr_permission(in, name, CLIENT_MAY_READ, perms);
if (r < 0)
return r;
}
size_t size, int flags, const UserPerm& perms)
{
if (cct->_conf->client_permissions) {
- int r = xattr_permission(in.get(), name, MAY_WRITE, perms);
+ int r = xattr_permission(in.get(), name, CLIENT_MAY_WRITE, perms);
if (r < 0)
return r;
}
std::scoped_lock lock(client_lock);
if (!fuse_default_permissions) {
- int r = xattr_permission(in, name, MAY_WRITE, perms);
+ int r = xattr_permission(in, name, CLIENT_MAY_WRITE, perms);
if (r < 0)
return r;
}
int Client::_removexattr(InodeRef &in, const char *name, const UserPerm& perms)
{
if (cct->_conf->client_permissions) {
- int r = xattr_permission(in.get(), name, MAY_WRITE, perms);
+ int r = xattr_permission(in.get(), name, CLIENT_MAY_WRITE, perms);
if (r < 0)
return r;
}
std::scoped_lock lock(client_lock);
if (!fuse_default_permissions) {
- int r = xattr_permission(in, name, MAY_WRITE, perms);
+ int r = xattr_permission(in, name, CLIENT_MAY_WRITE, perms);
if (r < 0)
return r;
}