std::string subj = ctx->credentials.clientName;
secCtx_ = ctx;
+ debug("'%s'", subj.c_str());
this->clientName = subj;
this->allowCurrent = vfsEvalRegex(this->allowRegex, this->denyRegex, subj.c_str());
// use the retrieved xattrs
vfsUpdateExtendedStat(meta, xattrs);
+ if (checkPermissions(this->secCtx_, meta.acl, meta.stat, S_IREAD) != 0)
+ vfsThrow(EACCES, "not enough permissions for '%s' to read '%s'", clientName.c_str(), meta.name.c_str());
+
#if 0
// XXX: black magic
// dmlite tests require proper count in st_nlink,
///
-/// override all permission checks - no file-level permissions in zero version
-///
-int VfsCatalog::checkPermissions(const SecurityContext *context, const Acl &acl, const struct stat &stat, mode_t mode) {
- return 0;
-}
-
-
-
-///
/// Get extended attributes.
///
/// @param path local disk namespace path
std::string prefix_;
private:
- int checkPermissions(const SecurityContext *context, const Acl &acl, const struct stat &stat, mode_t mode);
-
regex_t *allowRegex, *denyRegex, *allowWriteRegex, *denyWriteRegex;
bool allowCurrent, allowWriteCurrent;
std::string clientName;