Package org.exist.security

Examples of org.exist.security.Permission


        //get original resource
        Resource orgnRes = col.getResource(originalResource);

        //check permission before copy
        Permission prm = ums.getPermissions(orgnRes);
        assertEquals("rw-r--r--", prm.toString());
       
        //copy
        service.copyResource(XmldbURI.create(resourceURL), col.getPathURI(), XmldbURI.create(copyResource));

        //check permission after copy
        prm = ums.getPermissions(orgnRes);
        assertEquals("rw-r--r--", prm.toString());

        //get copy resource
        Resource copyRes = col.getResource(copyResource);
       
        //change permission on copy
        Account admin = ums.getAccount(ADMIN_UID);
        ums.chown(copyRes, admin, admin.getPrimaryGroup());
        ums.chmod(copyRes, "rwx--x---");
       
        //check permission of copy
        prm = ums.getPermissions(copyRes);
        assertEquals("rwx--x---", prm.toString());

        //check permission of original
        prm = ums.getPermissions(orgnRes);
        assertEquals("rw-r--r--", prm.toString());
    }
View Full Code Here


        }
    }

    public void checkPermissions(Collection collection, List<ErrorReport> errorList) {
        try {
            Permission perms = collection.getPermissions();
            Account owner = perms.getOwner();
            if (owner == null) {
                final ErrorReport.CollectionError error = new ErrorReport.CollectionError( ErrorReport.ACCESS_FAILED, "Owner account not found for collection: " + collection.getURI());
                error.setCollectionId( collection.getId() );
                error.setCollectionURI( collection.getURI() );
                errorList.add(error);
            }
            Group group = perms.getGroup();
            if (group == null) {
                final ErrorReport.CollectionError error = new ErrorReport.CollectionError( ErrorReport.ACCESS_FAILED, "Owner group not found for collection: " + collection.getURI());
                error.setCollectionId( collection.getId() );
                error.setCollectionURI( collection.getURI() );
                errorList.add(error);
View Full Code Here

        }
    }

    public ErrorReport checkPermissions(final DocumentImpl doc) {
        try {
            Permission perms = doc.getPermissions();
            Account owner = perms.getOwner();
            if (owner == null) {
                return new ErrorReport.ResourceError(ErrorReport.RESOURCE_ACCESS_FAILED, "Owner account not found for document " + doc.getFileURI());
            }
            Group group = perms.getGroup();
            if (group == null) {
                return new ErrorReport.ResourceError(ErrorReport.RESOURCE_ACCESS_FAILED, "Owner group not found for document " + doc.getFileURI());
            }
        } catch(Exception e) {
            return new ErrorReport.ResourceError(ErrorReport.RESOURCE_ACCESS_FAILED, "Exception caught while checking permissions on document " + doc.getFileURI(), e);
View Full Code Here

      try {
      modifyMetadata(new ModifyMetadata() {

        @Override
        public void modify(DocumentImpl resource) throws IOException {
          Permission perm = resource.getPermissions();
          try {
                        perm.setMode(perm.getMode() | (READ << 6) & ~(WRITE << 6));
                    } catch (PermissionDeniedException e) {
                        throw new IOException(e);
                    }
        }

        @Override
        public void modify(Collection collection) throws IOException {
          Permission perm = collection.getPermissionsNoLock();
          try {
                        perm.setMode(perm.getMode() | (READ << 6) & ~(WRITE << 6));
                    } catch (PermissionDeniedException e) {
                        throw new IOException(e);
                    }
        }
       
View Full Code Here

      try {
      modifyMetadata(new ModifyMetadata() {

        @Override
        public void modify(DocumentImpl resource) throws IOException {
          Permission perm = resource.getPermissions();
          try {
                        perm.setMode(perm.getMode() | (EXECUTE << 6));
                    } catch (PermissionDeniedException e) {
                        throw new IOException(e);
                    }
        }

        @Override
        public void modify(Collection collection) throws IOException {
          Permission perm = collection.getPermissionsNoLock();
          try {
                        perm.setMode(perm.getMode() | (EXECUTE << 6));
                    } catch (PermissionDeniedException e) {
                        throw new IOException(e);
                    }
        }
       
View Full Code Here

            final List<DocumentDesc> docs = new ArrayList<DocumentDesc>();
            final List<String> collections = new ArrayList<String>();
            if (collection.getPermissionsNoLock().validate(session.getUser(), Permission.READ)) {
                DocumentImpl doc;
//              Hashtable hash;
                Permission perms;
                for (final Iterator<DocumentImpl> i = collection.iterator(broker); i.hasNext(); ) {
                    doc = i.next();
                    perms = doc.getPermissions();
                    final DocumentDesc dd = new DocumentDesc();
//                    hash = new Hashtable(4);
                    dd.setName(doc.getFileURI().toString());
                    dd.setOwner(perms.getOwner().getName());
                    dd.setGroup(perms.getGroup().getName());
                    dd.setPermissions(perms.getMode());
                    dd.setType(doc.getResourceType() == DocumentImpl.BINARY_FILE
                            ? DocumentType.BinaryResource
                            : DocumentType.XMLResource);
                    docs.add(dd);
                }
                for(final Iterator<XmldbURI> i = collection.collectionIterator(broker); i.hasNext();) {
                    collections.add(i.next().toString());
                }
            }
            Permission perms = collection.getPermissionsNoLock();
            desc.setCollections(new Strings(collections.toArray(new String[collections.size()])));
            desc.setDocuments(new DocumentDescs(docs.toArray(new DocumentDesc[docs.size()])));
            desc.setName(collection.getURI().toString());
            desc.setCreated(collection.getCreationTime());
            desc.setOwner(perms.getOwner().getName());
            desc.setGroup(perms.getGroup().getName());
            desc.setPermissions(perms.getMode());
            return desc;
        } catch (final Exception ex){
            throw new RemoteException(ex.getMessage());
        } finally {
            if(collection != null)
View Full Code Here

                doc = broker.getXMLResource(resource, Lock.WRITE_LOCK);
                if (doc == null)
                    {throw new RemoteException("document or collection "
                            + resource + " not found");}
                LOG.debug("changing permissions on document " + resource);
                final Permission perm = doc.getPermissions();
                if (perm.getOwner().equals(session.getUser())
                || manager.hasAdminPrivileges(session.getUser())) {
                    if (owner != null) {
                        perm.setOwner(owner);
                        perm.setGroup(ownerGroup);
                    }
                    perm.setMode(permissions);
// TODO check XML/Binary resource
//                    broker.storeDocument(transaction, doc);
                    broker.storeXMLResource(transaction, doc);
                    transact.commit(transaction);
                    broker.flush();
                    return;
//                    return true;
                }
                transact.abort(transaction);
                throw new PermissionDeniedException("not allowed to change permissions");
            }
            LOG.debug("changing permissions on collection " + resource);
            final Permission perm = collection.getPermissionsNoLock();
            if (perm.getOwner().equals(session.getUser())
            || manager.hasAdminPrivileges(session.getUser())) {
                perm.setMode(permissions);
                if (owner != null) {
                    perm.setOwner(owner);
                    perm.setGroup(ownerGroup);
                }
                transaction.registerLock(collection.getLock(), Lock.WRITE_LOCK);
                broker.saveCollection(transaction, collection);
                transact.commit(transaction);
                broker.flush();
View Full Code Here

        public int permission;
    }
   
    @Test
    public void setUid_roundtrip() throws PermissionDeniedException {
        Permission permission = new UnixStylePermissionAider(0555);
        assertFalse(permission.isSetUid());
        permission.setSetUid(true);
        assertTrue(permission.isSetUid());
        assertEquals(04555, permission.getMode());
       
        permission = new UnixStylePermissionAider(04555);
        assertTrue(permission.isSetUid());
        permission.setSetUid(false);
        assertFalse(permission.isSetUid());
        assertEquals(0555, permission.getMode());
    }
View Full Code Here

        assertEquals(0555, permission.getMode());
    }
   
    @Test
    public void setGid_roundtrip() throws PermissionDeniedException {
        Permission permission = new UnixStylePermissionAider(0555);
        assertFalse(permission.isSetGid());
        permission.setSetGid(true);
        assertTrue(permission.isSetGid());
        assertEquals(02555, permission.getMode());
       
        permission = new UnixStylePermissionAider(02555);
        assertTrue(permission.isSetGid());
        permission.setSetGid(false);
        assertFalse(permission.isSetGid());
        assertEquals(0555, permission.getMode());
    }
View Full Code Here

        assertEquals(0555, permission.getMode());
    }
   
    @Test
    public void setSticky_roundtrip() throws PermissionDeniedException {
        Permission permission = new UnixStylePermissionAider(0555);
        assertFalse(permission.isSticky());
        permission.setSticky(true);
        assertTrue(permission.isSticky());
        assertEquals(01555, permission.getMode());
       
        permission = new UnixStylePermissionAider(01555);
        assertTrue(permission.isSticky());
        permission.setSticky(false);
        assertFalse(permission.isSticky());
        assertEquals(0555, permission.getMode());
    }
View Full Code Here

TOP

Related Classes of org.exist.security.Permission

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.