2013-10-08 2 views
1

Я использую java.nio.file.attribute.AclFileAttributeView и AclEntry для сбора всех ACL файлов в системе. Все довольно прямолинейно, пока я не понял, что в библиотеке нет способа проверить, является ли основной пользователь или группа.Java nio AclEntry. Как узнать, является ли руководитель группой или пользователем

Функция должна возвращать только пользователь (не группа), у которого есть разрешение на чтение, есть ли у вас какие-либо предложения?

Вот черновик моего кода

public String[] getViewer(String path) 
{ 
    // List of the ACL enum of read permission 
    List<AclEntryPermission> readAcl = new ArrayList<AclEntryPermission>(); 
    readAcl.add(AclEntryPermission.READ_ATTRIBUTES); 
    readAcl.add(AclEntryPermission.READ_DATA); 
    readAcl.add(AclEntryPermission.SYNCHRONIZE); 
    readAcl.add(AclEntryPermission.READ_NAMED_ATTRS); 

    AclFileAttributeView acl = Files.getFileAttributeView(Paths.get(path), 
      AclFileAttributeView.class); 
    List<String> names = new ArrayList<String>(); 
    if (acl!=null) 
    { 
     try { 
      List<AclEntry> aclList = acl.getAcl(); 
      for (AclEntry entry: aclList) 
      { 
       //System.out.println(a.principal() + ":"); 
       //System.out.println(entry.permissions() + "\n"); 
       if (entry.permissions().containsAll(readAcl)) 
       { 
        // Only add principal if it is not a group 
        if (entry.principal.isGroup()) 
        names.add(entry.principal().getName()); 
       } 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    return names.toArray(new String[]{}); 
} 

ответ

0

Чтобы просто ответить на ваш вопрос, проверка GroupPrincipal возможно. Вы можете использовать только

if (entry.principal() instanceof GroupPrincipal) 

для проверки.

Однако я не вижу, что вы можете сделать с этим результатом проверки.

+0

Спасибо, я использую его для группового поиска в AD. – MikeNQ

Смежные вопросы