Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Подскажите пожалуйста, как узнать права на папку


Автор: marchik 23.5.2013, 09:33
Подскажите пожалуйста, как узнать права на папку (наследуются ли права или нет от папки родителя).
 То есть есть папка Z:\test, она имеет две папки: Z:\test\test1, Z:\test\test2

 Предположим права на папку Z:\test это пользвоатели домена и любой пользователь (пусть будет Andreenko)
 Предположим, что Z:\test\test1 не имеет наследованных прав от Z:\test, а Z:\test\test2 имеет наследованные права от Z:\test.

 Как узнать, что папка Z:\test\test1 не имеет наследованных прав?
 java 7, nio, не?

Код

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.AclEntry;
import java.nio.file.attribute.AclFileAttributeView;
import java.nio.file.attribute.FileOwnerAttributeView;
import java.nio.file.attribute.UserPrincipal;
import java.util.List;
 
public class Main {
 
    public static void main(String[] args) {
         Path path = Paths.get("Z:/test");
         
         System.out.println(path.toString());
         
         List<AclEntry> aclEntries = null;       
         
         AclFileAttributeView fileAttributeView = Files.getFileAttributeView(path, AclFileAttributeView.class);
         
         try {
            aclEntries = fileAttributeView.getAcl();
            
            for (AclEntry aclEntry : aclEntries) {
                System.out.println("****************************************");
                System.out.println("principal " + aclEntry.principal().getName());
                System.out.println("type " + aclEntry.type().toString());
                System.out.println("permissions " + aclEntry.permissions().toString());
                System.out.println("flags " + aclEntry.flags().toString());
                
            }
        } catch (IOException e1) {
            e1.printStackTrace();
        }
       }
}


Вывод программы примерно следующий:

 Z:\test
 ****************************************
 principal ****\Andreenko
 type DENY
 permissions [DELETE_CHILD, SYNCHRONIZE, WRITE_ACL, APPEND_DATA, READ_NAMED_ATTRS, READ_ACL, WRITE_DATA, READ_ATTRIBUTES, READ_DATA, WRITE_OWNER, EXECUTE, DELETE, WRITE_ATTRIBUTES, WRITE_NAMED_ATTRS]
 flags [DIRECTORY_INHERIT, FILE_INHERIT]

 ****************************************
 principal ****\Пользователи домена
 type ALLOW
 permissions [READ_NAMED_ATTRS, READ_ACL, READ_ATTRIBUTES, READ_DATA, SYNCHRONIZE, EXECUTE]
 flags [DIRECTORY_INHERIT, FILE_INHERIT]


 как выяснилось флаги ( flags [DIRECTORY_INHERIT, FILE_INHERIT] ) показывают, что права от данной папки распространяются на все вложенные в эту папку.


 Попробую показать на примере, в картинках: 

 Права на папку Z:\test

http://i46.fastpic.ru/big/2013/0508/...b97cb64794.jpg


 Права на паку Z:\test\test1 (унаследовано от z:\test)

http://i47.fastpic.ru/big/2013/0508/...74d352a74d.jpg


 Права на паку Z:\test\test2 (не унаследовано от z:\test)

http://i48.fastpic.ru/big/2013/0508/...a8ef1938df.jpg

 Как узнать, что права наследуются ? или нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)