разрешения для каталога Java с помощью AccessController.checkPermission - PullRequest
0 голосов
/ 19 декабря 2010

я пытаюсь получить права доступа к каталогу с помощью метода checkPermission (), как в коде.

<code>private static boolean dirPermissions(String dir, String perm) {
    try {
        AccessController.checkPermission(new FilePermission(dir, perm));
        return true;
    } catch (AccessControlException e) {
        return false;
    }
}

документация java (<= 6) для большинствасоответствующие методы класса File (например, canRead (), canWrite () и т. д.) предполагают, что они полезны для файла, но не для каталогов (я здесь не так?). </p>

я не выполняю код насервера, или запускает потоки mutliple, и им нужно сохранять соотношения между ними, или делать что-то хитрое, настолько простое, насколько это возможно - новая установка Eclipse с локальным запущенным jvm и кодом и доступом к локальным каталогам. ОднакоcheckPermission всегда генерирует исключение (то есть доступ запрещен) для папок, на которые, очевидно, у jvm есть права на чтение / запись, потому что я могу создавать папки и записывать файлы и т. д.

предположительно, это нелокальный java.policy, потому что я успешно пишу в файлы, поэтому у меня есть необходимые разрешения безопасности.есть идеи ...?

1 Ответ

2 голосов
/ 19 декабря 2010

Во-первых, вы, вероятно, должны использовать SecurityManager.

FilePermission отлично справляется с каталогами.Вы, вероятно, хотите включить все файлы и каталоги, включенные ниже.Для этого используйте /- в конце.Используйте /* для нерекурсивных файлов и каталогов.

checkPermission сгенерирует исключение, если какой-либо кадр (или, скорее, ProtectionDomain) текущего контекста управления доступом (acc) не имееттребуется разрешение.

FilePermission не имеет ничего общего с разрешениями ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...